openapi: 3.1.0 info: version: 2.0.0 x-latency-category: responsive x-endpoint-cost: light title: Telnyx API description: SIP trunking, SMS, MMS, Call Control and Telephony Data Services. contact: email: support@telnyx.com servers: - url: https://api.telnyx.com/v2 description: Version 2.0.0 of the Telnyx API security: - bearerAuth: [] tags: - name: AI Collections description: Create and manage logical collections of your Telnyx data, tune retrieval settings, manage sources, and run collection-scoped semantic search. - name: AI Gateway description: Manage and report AI Gateway usage. - name: AI Gateway description: Manage and report AI Gateway traffic. - name: Access Tokens description: Access Tokens creation - name: Addresses description: Operations to work with Address records. Address records are emergency-validated addresses meant to be associated with phone numbers. They are validated for emergency usage purposes at creation time, although you may validate them separately with a custom workflow using the ValidateAddress operation separately. Address records are not usable for physical orders, such as for Telnyx SIM cards, please use UserAddress for that. It is not possible to entirely skip emergency service validation for Address records; if an emergency provider for a phone number rejects the address then it cannot be used on a phone number. To prevent records from getting out of sync, Address records are immutable and cannot be altered once created. If you realize you need to alter an address, a new record must be created with the differing address. - name: Assistants description: Configure AI assistant specifications - name: Audit Logs description: Audit log operations. - name: AutoRechargePreferences description: V2 Auto Recharge Preferences API - name: Avatars description: Create and manage real-time AI avatars - name: Billing description: Billing operations - name: Billing Groups description: Billing groups operations - name: Bot Signup description: Agentic (bot) signup for Telnyx accounts. An AI agent solves a reverse-CAPTCHA challenge designed to be easy for LLMs and hard for humans, registers an account, and signs in by consuming a magic link emailed to the account owner. All endpoints are public and unauthenticated; signup endpoints are additionally gated by the freemium feature flags and per-country availability. - name: Brands description: Brand operations - name: Bucket SSL Certificate description: SSL certificate operations - name: Bucket Usage description: Bucket Usage operations - name: Bulk Phone Number Campaigns description: Phone number campaign bulk assignment - name: Bulk Phone Number Operations description: Background jobs performed over a batch of phone numbers - name: Bulk Small Business description: Endpoints for creating and checking the status of campaigns, brands, and phone numbers - name: Bundle Pricing description: Bundle Pricing operations - name: CDR Reports description: Voice batch detail records - name: CDR Usage Reports description: Voice usage reports - name: Call Commands description: Call Control command operations - name: Call Control Applications description: Call Control applications operations - name: Call Information description: Call information - name: Call Recordings description: Call Recordings operations. - name: Callbacks description: Callbacks - name: Campaign description: Campaign operations - name: Chat description: Generate text with LLMs - name: Clusters description: Identify common themes and patterns in your embedded documents - name: Comments description: Read messages from the Telnyx vetting team and reply with clarifying information. - name: Conference Commands description: Conference command operations - name: Connections description: Connections operations - name: Contents description: Page content retrieval for URLs. - name: Conversation Histories description: Semantic vector search over ingested conversation history records with multi-region fan-out. - name: Conversations description: Manage historical AI assistant conversations - name: Country Coverage description: Country Coverage - name: Credential Connections description: Credential connection operations - name: Credentials description: Credentials operations - name: Customer Service Record description: Customer Service Record operations - name: DIR References description: 'Submit and manage the two business references and one financial reference that vouch for a DIR. References are contacted to confirm the business identity during vetting. References (two business references and one financial reference) are needed only if the documents uploaded with the DIR don''t already prove the business is legitimate and financially stable. Any one of these is enough proof: audited or certified financial statements (uploaded as `other`, with a description), a commercial credit report (uploaded as `business_credit_report`), or references. Telnyx reviewers decide during vetting whether your documents are enough.' - name: Data Migration description: Migrate data from an external provider into Telnyx Cloud Storage - name: Debugging description: Call Control debugging - name: Decision Models description: Beta API for evaluating shared context with typed questions and structured answers using Flash or Pro. - name: Detail Records description: Detail Records operations - name: Dialogflow Integration description: Dialogflow Connection Operations. - name: Display Identity Records description: A Display Identity Record (DIR) is the verified calling identity (display name, logo, call reasons) shown to recipients on outbound calls. - name: Documents description: Documents - name: Dynamic Emergency Addresses description: Dynamic emergency address operations - name: Dynamic Emergency Endpoints description: Dynamic Emergency Endpoints - name: Email Domain DNS Records description: DNS verification records for email domains - name: Email Domains description: Email domain CRUD operations - name: Email Drafts description: Create, list, retrieve, update, delete, and send unsent draft messages belonging to an agent inbox. - name: Email Events description: Retrieve account-level email events and event statistics. - name: Email Inboxes description: Create and manage agent inboxes, retrieve inbound messages and threads, and reply to or forward messages. - name: Email Messages description: Send and manage email messages. Legacy `/v2/emails` routes are aliases for these endpoints. - name: Email Suppression Imports description: Async CSV import of competitor suppression lists. - name: Email Suppressions description: Recipient suppression records (`/v2/email_blocks`). - name: Email Templates description: Create, list, retrieve, update, delete, and render Liquid email templates. - name: Email Threads description: Account-wide conversation threads across every inbox, for agents operating many inboxes at once. - name: Email Unsubscribe Groups description: Named groups and group-scoped suppressions. - name: Email Validations description: Validate email addresses synchronously or in asynchronous batches. - name: Email Verification description: Verify ownership of a DIR's authorizer email. A short code is emailed and confirmed. - name: Email Webhooks description: Per-domain webhook endpoints with event subscriptions - name: Embeddings description: Embed documents and perform text searches - name: Enterprises description: Manage the legal-entity record that owns your DIRs and phone numbers. - name: External Connections description: External Connections operations - name: FQDN Connections description: FQDN connection operations - name: FQDNs description: FQDN operations - name: File-based Text-to-Speech description: Turn audio into text or text into audio. - name: Fine Tuning description: Customize LLMs for your unique needs - name: Global IPs description: Global IPs - name: Hosted Numbers description: Manage your messaging hosted numbers - name: IP Addresses description: IP Address Operations - name: IP Connections description: IP connection operations - name: IP Ranges description: IP Range Operations - name: IPs description: IP operations - name: Inexplicit Number Orders description: Inexplicit number orders for bulk purchasing without specifying exact numbers - name: Infringement Claims description: Trademark or impersonation claims filed against your DIR. Customers may contest a claim with supporting evidence. - name: Integration Secrets description: Store and retrieve integration secrets - name: Inventory Level description: Inventory Level - name: Invoice description: Invoice operations - name: MDR Detailed Reports description: Messaging batch detail records - name: MDR Usage Reports description: Messaging usage reports - name: Machine Payments description: Machine payment (MPP) account-credit operations. Fund your Telnyx account programmatically from a machine or agent using the Machine Payment Protocol, an HTTP-402 flow settled via Stripe or Tempo. - name: Managed Accounts description: Managed Accounts operations - name: Media Storage API description: Media Storage operations - name: Meeting Session Actions description: Send real-time speech and chat actions to an active meeting session. - name: Meeting Session Artifacts description: Create and retrieve asynchronous summaries and action-item artifacts. - name: Meeting Session Data description: Read lifecycle events and transcript segments for a meeting session, and delete its recording media. - name: Meeting Session Webhooks description: Outbound webhook deliveries for meeting session events. - name: Meeting Sessions description: Create, list, retrieve, update, and stop meeting sessions. - name: Memory description: Write memories into a profile and recall them. - name: Messages description: Messages - name: Messaging URL Domains description: Messaging URL Domains - name: Mobile Network Operators description: Mobile network operators operations - name: Mobile Phone Numbers description: Mobile phone number operations - name: Mobile Voice Connections description: Mobile voice connection operations - name: Monthly Charges description: Monthly Charges Report - name: Networks description: Network operations - name: Noise Suppression Engines description: Noise suppression engines that can be selected when configuring noise suppression on voice connections. - name: Notifications description: Notification settings operations - name: Number Lookup description: Look up phone number data - name: Number Portout description: Number portout operations - name: Number Settings description: Configure your phone numbers - name: OTA updates description: OTA updates operations - name: OpenAI Embeddings description: OpenAI-compatible embeddings endpoints for generating vector representations of text - name: Operations description: Whether a write has finished. - name: Opt-Out Management description: Opt-Out Management - name: Organization Users description: Operations related to users in your organization - name: Outbound Voice Profiles description: Outbound voice profiles operations - name: Phone Number Batches description: Phone numbers are submitted to Telnyx for vetting in batches. Batches group all numbers added in a single request under the same Letter of Authorization. - name: Phone Number Blocks Background Jobs description: Background jobs performed over a phone-numbers block's phone numbers - name: Phone Number Campaigns description: Phone number campaign assignment - name: Phone Number Configurations description: Configure your phone numbers - name: Phone Number Order Documents description: Number order documents - name: Phone Number Orders description: Number orders - name: Phone Number Porting description: Determining portability of phone numbers - name: Phone Number Reservations description: Number reservations - name: Phone Number Search description: Number search - name: Phone Numbers description: Associate phone numbers with a verified DIR so calls from those numbers carry the DIR's display identity. - name: Porting Orders description: Endpoints related to porting orders management. - name: Presigned Object URLs description: Presigned object URL operations - name: Pricing description: Public pricing operations - name: Private Wireless Gateways description: Private Wireless Gateways operations - name: Profiles description: What a namespace and a profile hold. - name: Profiles description: Messaging profiles - name: Programmable Fax Applications description: Fax Applications operations - name: Programmable Fax Commands description: Programmable fax command operations - name: Pronunciation Dictionaries description: Manage pronunciation dictionaries for text-to-speech synthesis. Dictionaries contain alias items (text replacement) and phoneme items (IPA pronunciation notation) that control how specific words are spoken. - name: Public Internet Gateways description: Public Internet Gateway operations - name: Push Credentials description: Mobile push credential management - name: Queue Commands description: Queue commands operations - name: RCS description: Send RCS messages - name: RCS Agents description: Manage RCS agent registration, testing, verification, and launch. - name: RCS Brands description: Manage the legal business entities that operate RCS agents. - name: Reference Data description: 'Static reference values the API accepts: call reasons, document types, rejection types.' - name: Regions description: Regions - name: Regulatory Requirements description: Regulatory Requirements - name: Reporting description: Wireless reporting operations - name: Reports description: Ledger billing reports - name: Reputation description: Phone-number reputation monitoring (spam-score lookup and tracking). - name: Requirement Groups description: Requirement Groups - name: Requirement Types description: Types of requirements for international numbers and porting orders - name: Requirements description: Requirements for international numbers and porting orders - name: Research description: Deep research with citations and async task polling. - name: Room Compositions description: Rooms Compositions operations. - name: Room Participants description: Rooms Participants operations. - name: Room Recordings description: Rooms Recordings operations. - name: Room Sessions description: Rooms Sessions operations. - name: Rooms description: Rooms operations. - name: Rooms Client Tokens description: Rooms Client Tokens operations. - name: SETI Observability description: Observability into Telnyx platform stability and performance. - name: SIM Card Actions description: View SIM card actions, their progress and timestamps using the SIM Card Actions API - name: SIM Card Group Actions description: SIM Card Group actions operations - name: SIM Card Groups description: SIM Card Groups operations - name: SIM Card Orders description: SIM Card Orders operations - name: SIM Cards description: SIM Cards operations - name: SIPREC Connectors description: SIPREC connectors configuration. - name: Session Analysis description: Analyze voice AI sessions, costs, and event hierarchies across Telnyx products. - name: Settings description: How a namespace's summaries are written. - name: Short Codes description: Short codes - name: Sources description: What a profile stored, and what its memories came from. - name: Speech To Text Capabilities description: Discover available speech-to-text providers, models, and supported languages. - name: Speech To Text over WebSockets description: Speech to text command operations - name: Speech to Text Batch Reports description: Speech to text batch detail records - name: Speech to text Usage Reports description: Speech to text usage reports - name: Spend Limits description: 'Daily and monthly spend limits per product. A limit applies to the organization of the authenticated user, or to the user''s own account when they belong to no organization; every user of the organization sees and changes the same limits. - **Periods.** `daily` covers the current UTC day and `monthly` the current UTC calendar month. The two limits are independent: you can set either, both or neither. - **Blocking.** When spend in a period goes above the limit (strictly greater), the product is blocked until the period ends: 00:00 UTC the next day for `daily`, 00:00 UTC on the 1st of the next month for `monthly`. A block appears within about 2 minutes (daily) or 10 minutes (monthly) of the spend being recorded. - **Changes apply immediately.** Creating, updating or deleting a limit checks the period''s spend in the same request: raising the limit above the spend, or removing it, lifts that period''s block, and lowering it below the spend blocks the product at once. The `evaluation` object in the response says what happened. - **Supported products.** Today only `inference` supports spend limits. A blocked account gets HTTP 403 with the error title `Inference spend limit reached` (code `10039`) on new billable chat completions, Responses, Anthropic Messages and classification requests; requests already running finish normally. Take the list of products from the list operation. - **Limits set by Telnyx.** Telnyx support can also set a limit on your account. It is listed with `origin: operator` and you can update or delete it like your own.' - name: Stored Payment Transactions description: Operations for managing stored payment transactions. - name: TeXML Applications description: TeXML Applications operations - name: TeXML REST Commands description: TeXML REST Commands - name: Telco Data Usage Reports description: Number lookup usage reports - name: Terms of Service description: Accept and review the Branded Calling and Phone Number Reputation terms of service. - name: Text To Speech Commands description: Text to speech streaming command operations - name: Text to Speech Commands description: Text to Speech commands operations - name: Traffic Policy Profiles description: Traffic Policy Profiles operations - name: UAC Connections description: UAC connection operations - name: Usage Reports (BETA) description: Usage data reporting across Telnyx products - name: User Tags description: User-defined tags for Telnyx resources - name: UserAddresses description: Operations for working with UserAddress records. UserAddress records are stored addresses that users can use for non-emergency-calling purposes, such as for shipping addresses for orders of wireless SIMs (or other physical items). They cannot be used for emergency calling and are distinct from Address records, which are used on phone numbers. - name: Verification Requests description: Manage your tollfree verification requests - name: Verified Numbers description: Verified Numbers operations - name: Verify description: Two factor authentication API - name: Virtual Cross Connects description: Virtual Cross Connect operations - name: Voice Channels description: Voice Channels - name: Voice Clones description: Capture and manage voice identities as clones for use in text-to-speech synthesis. - name: Voice Designs description: Create and manage AI-generated voice designs using natural language prompts. - name: Voice SDK Stats description: Retrieve raw Voice SDK call report stats payloads for WebRTC call troubleshooting. - name: Voicemail description: Voicemail API - name: Web Search description: Real-time web search returning structured, LLM-ready JSON results. - name: Webhooks description: Webhooks operations - name: Whatsapp Business Accounts description: Manage Whatsapp business accounts - name: Whatsapp Message Templates description: Manage Whatsapp message templates - name: Whatsapp Phone Numbers description: Manage Whatsapp phone numbers - name: Whatsapp messaging description: Send Whatsapp messages - name: WireGuard Interfaces description: WireGuard Interface operations - name: Wireless description: Wireless operations - name: Wireless Blocklists description: Wireless Blocklists operations - name: Wireless Regions description: Regions for wireless services - name: cloudfs filesystems description: Manage CloudFS filesystems — JuiceFS-compatible filesystems backed by Telnyx Cloud Storage - name: kv keys description: Read and write keys within a KV namespace - name: kv namespaces description: Manage KV storage namespaces - name: sql databases description: Manage SQL databases and run SQL against them - name: x402 Payment Transactions description: Operations for x402 cryptocurrency payment transactions. Fund your Telnyx account using USDC stablecoin payments via the x402 protocol. paths: /.well-known/oauth-authorization-server: get: operationId: GetOAuthAuthorizationServerMetadata tags: - OAuth Discovery summary: Authorization server metadata description: OAuth 2.0 Authorization Server Metadata (RFC 8414) security: [] responses: '200': description: Authorization server metadata content: application/json: schema: $ref: '#/components/schemas/AuthorizationServerMetadata' '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' servers: - url: https://api.telnyx.com /.well-known/oauth-protected-resource: get: operationId: GetOAuthProtectedResourceMetadata tags: - OAuth Discovery summary: Protected resource metadata description: OAuth 2.0 Protected Resource Metadata for resource discovery security: [] responses: '200': description: Protected resource metadata content: application/json: schema: $ref: '#/components/schemas/ResourceMetadata' example: resource: https://example.com authorization_servers: - https://example.com '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' servers: - url: https://api.telnyx.com /10dlc/brand: get: tags: - Brands summary: List Brands operationId: GetBrands parameters: - required: false schema: title: Page minimum: 1 type: integer default: 1 name: page in: query description: Page number to retrieve (1-based). - description: number of records per page. maximum of 500 required: false schema: title: Recordsperpage type: integer description: number of records per page. maximum of 500 default: 10 name: recordsPerPage in: query - name: sort required: false schema: title: Sort description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. type: string enum: - assignedCampaignsCount - -assignedCampaignsCount - brandId - -brandId - createdAt - -createdAt - displayName - -displayName - identityStatus - -identityStatus - status - -status - tcrBrandId - -tcrBrandId default: -createdAt description: Specifies the sort order for results. If not given, results are sorted by createdAt in descending order. example: -identityStatus in: query - required: false schema: title: Displayname type: string name: displayName in: query description: Filter results by display name. - required: false schema: title: Entitytype type: string name: entityType in: query description: Filter results by entity type. - required: false schema: title: State type: string name: state in: query description: Filter results by state. - required: false schema: title: Country type: string name: country in: query description: Filter results by country. - name: brandId schema: title: BrandId type: string example: 826ef77a-348c-445b-81a5-a9b13c68fbfe in: query description: Filter results by the Telnyx Brand id required: false - name: tcrBrandId schema: title: TCRBrandId type: string example: BBAND1 in: query description: Filter results by the TCR Brand id required: false responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BrandRecordSetCSP' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: This endpoint is used to list all brands associated with your organization. post: tags: - Brands summary: Create Brand operationId: CreateBrandPost parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateBrand' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxBrand' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: This endpoint is used to create a new brand. A brand is an entity created by The Campaign Registry (TCR) that represents an organization or a company. It is this entity that TCR created campaigns will be associated with. Each brand creation will entail an upfront, non-refundable $4 expense. /10dlc/brand/feedback/{brandId}: get: tags: - Brands summary: Get Brand Feedback By Id description: "Get feedback about a brand by ID. This endpoint can be used after creating or revetting\na brand.\n\n\ Possible values for `.category[].id`:\n\n* `TAX_ID` - Data mismatch related to tax id and its associated properties.\n\ * `STOCK_SYMBOL` - Non public entity registered as a public for profit entity or\n the stock information mismatch.\n\ * `GOVERNMENT_ENTITY` - Non government entity registered as a government entity.\n Must be a U.S. government entity.\n\ * `NONPROFIT` - Not a recognized non-profit entity. No IRS tax-exempt status\n found.\n* `OTHERS` - Details of the\ \ data misrepresentation if any." operationId: GetBrandFeedbackById parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BrandFeedback' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' /10dlc/brand/smsOtp/{referenceId}: get: tags: - Brands summary: Get Brand SMS OTP Status description: 'Query the status of an SMS OTP (One-Time Password) for Sole Proprietor brand verification. This endpoint allows you to check the delivery and verification status of an OTP sent during the Sole Proprietor brand verification process. You can query by either: * `referenceId` - The reference ID returned when the OTP was initially triggered * `brandId` - Query parameter for portal users to look up OTP status by Brand ID The response includes delivery status, verification dates, and detailed delivery information.' operationId: GetBrandSmsOtpStatus parameters: - required: true schema: title: Referenceid type: string example: OTP4B2001 name: referenceId in: path description: The reference ID returned when the OTP was initially triggered - required: false schema: title: Brandid type: string example: B123ABC name: brandId in: query description: Filter by Brand ID for easier lookup in portal applications responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BrandSmsOtpStatus' '404': description: OTP reference not found content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' /10dlc/brand/{brandId}: delete: tags: - Brands summary: Delete Brand description: Delete Brand. This endpoint is used to delete a brand. Note the brand cannot be deleted if it contains one or more active campaigns, the campaigns need to be inactive and at least 3 months old due to billing purposes. operationId: DeleteBrand parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '204': description: Brand removed successfully '400': description: Brand cannot be deleted content: application/json: schema: $ref: '#/components/schemas/10dlc_Error_ca4eb0ad6f' example: code: string title: string detail: string source: pointer: string parameter: string '404': description: Brand not found content: application/json: schema: $ref: '#/components/schemas/10dlc_Error_ca4eb0ad6f' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' get: tags: - Brands summary: Get Brand operationId: GetBrand parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxBrandWithCampaignsCount' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Returns the details of a 10DLC brand by its brandId, including the count of campaigns associated with the brand. put: tags: - Brands summary: Update Brand operationId: UpdateBrand parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateBrand' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxBrand' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Update a brand's attributes by `brandId`. /10dlc/brand/{brandId}/2faEmail: post: tags: - Brands summary: Resend brand 2FA email operationId: ResendBrand2faEmail parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '200': description: Successful Response 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Requests a new two-factor authentication email for the specified 10DLC brand. Complete verification through the link delivered to the brand contact before continuing registration. /10dlc/brand/{brandId}/externalVetting: get: tags: - Brands summary: List External Vettings description: Get list of valid external vetting record for a given brand operationId: ListExternalVettings parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ExternalVettingList' example: - evpId: Evpid vettingId: vettingId vettingToken: vettingToken vettingScore: 0 vettingClass: Vettingclass vettedDate: vettedDate createDate: createDate '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' post: tags: - Brands summary: Order Brand External Vetting description: 'Order new external vetting for a brand. Duplicate orders for the same `evpId` and `vettingClass` return `400` with code `10012` if a successful vetting exists within the last 180 days, or one is currently being processed. Failed vettings can be retried immediately.' operationId: PostOrderExternalVetting parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. requestBody: content: application/json: schema: $ref: '#/components/schemas/OrderExternalVetting' example: evpId: Evpid vettingClass: Vettingclass required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ExternalVetting' example: evpId: Evpid vettingId: vettingId vettingToken: vettingToken vettingScore: 0 vettingClass: Vettingclass vettedDate: vettedDate createDate: createDate '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' put: tags: - Brands summary: Import External Vetting Record description: 'This operation can be used to import an external vetting record from a TCR-approved vetting provider. If the vetting provider confirms validity of the record, it will be saved with the brand and will be considered for future campaign qualification.' operationId: PutExternalVettingRecord parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. requestBody: content: application/json: schema: $ref: '#/components/schemas/ImportExternalVetting' example: evpId: Evpid vettingId: Vettingid vettingToken: Vettingtoken required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ExternalVetting' example: evpId: Evpid vettingId: vettingId vettingToken: vettingToken vettingScore: 0 vettingClass: Vettingclass vettedDate: vettedDate createDate: createDate '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' /10dlc/brand/{brandId}/revet: put: tags: - Brands summary: Revet Brand operationId: RevetBrand parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxBrand' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: This operation allows you to revet the brand. However, revetting is allowed once after the successful brand registration and thereafter limited to once every 3 months. /10dlc/brand/{brandId}/smsOtp: get: tags: - Brands summary: Get Brand SMS OTP Status by Brand ID description: 'Query the status of an SMS OTP (One-Time Password) for Sole Proprietor brand verification using the Brand ID. This endpoint allows you to check the delivery and verification status of an OTP sent during the Sole Proprietor brand verification process by looking it up with the brand ID. The response includes delivery status, verification dates, and detailed delivery information. **Note:** This is an alternative to the `/10dlc/brand/smsOtp/{referenceId}` endpoint when you have the Brand ID but not the reference ID.' operationId: GetBrandSmsOtpStatusByBrandId parameters: - required: true schema: title: Brandid type: string example: 4b20019b-043a-78f8-0657-b3be3f4b4002 name: brandId in: path description: The Brand ID for which to query OTP status responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BrandSmsOtpStatus' '404': description: OTP status not found for this brand content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' post: tags: - Brands summary: Trigger Brand SMS OTP description: 'Trigger or re-trigger an SMS OTP (One-Time Password) for Sole Proprietor brand verification. **Important Notes:** * Only allowed for Sole Proprietor (`SOLE_PROPRIETOR`) brands * Triggers generation of a one-time password sent to the `mobilePhone` number in the brand''s profile * Campaigns cannot be created until OTP verification is complete * US/CA numbers only for real OTPs; mock brands can use non-US/CA numbers for testing * Returns a `referenceId` that can be used to check OTP status via the GET `/10dlc/brand/smsOtp/{referenceId}` endpoint **Use Cases:** * Initial OTP trigger after Sole Proprietor brand creation * Re-triggering OTP if the user didn''t receive or needs a new code' operationId: TriggerBrandSmsOtp parameters: - required: true schema: title: Brandid type: string example: 4b20019b-043a-78f8-0657-b3be3f4b4002 name: brandId in: path description: The Brand ID for which to trigger the OTP requestBody: content: application/json: schema: $ref: '#/components/schemas/TriggerBrandSmsOtpRequest' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TriggerBrandSmsOtpResponse' '400': description: Bad Request - Brand is not a Sole Proprietor or invalid mobile phone number content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' put: tags: - Brands summary: Verify Brand SMS OTP description: "Verify the SMS OTP (One-Time Password) for Sole Proprietor brand verification.\n\n**Verification Flow:**\n\ \n1. User receives OTP via SMS after triggering\n2. User submits the OTP pin through this endpoint\n3. Upon successful\ \ verification:\n - A `BRAND_OTP_VERIFIED` webhook event is sent to the CSP\n - The brand's `identityStatus` changes\ \ to `VERIFIED`\n - Campaigns can now be created for this brand\n\n**Error Handling:**\n\nProvides proper error\ \ responses for:\n* Invalid OTP pins\n* Expired OTPs\n* OTP verification failures" operationId: VerifyBrandSmsOtp parameters: - required: true schema: title: Brandid type: string example: 4b20019b-043a-78f8-0657-b3be3f4b4002 name: brandId in: path description: The Brand ID for which to verify the OTP requestBody: content: application/json: schema: $ref: '#/components/schemas/VerifyBrandSmsOtpRequest' required: true responses: '204': description: OTP verified successfully - No content returned '400': description: Bad Request - Invalid or expired OTP content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' /10dlc/brand_feedback/{brandId}: get: tags: - Brands summary: Get Brand Feedback By Id description: "Get feedback about a brand by ID. This endpoint can be used after creating or revetting\na brand.\n\n\ Possible values for `.category[].id`:\n\n* `TAX_ID` - Data mismatch related to tax id and its associated properties.\n\ * `STOCK_SYMBOL` - Non public entity registered as a public for profit entity or\n the stock information mismatch.\n\ * `GOVERNMENT_ENTITY` - Non government entity registered as a government entity.\n Must be a U.S. government entity.\n\ * `NONPROFIT` - Not a recognized non-profit entity. No IRS tax-exempt status\n found.\n* `OTHERS` - Details of the\ \ data misrepresentation if any." operationId: GetBrandFeedbackById parameters: - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BrandFeedback' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/brands_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse' x-latency-category: responsive /10dlc/campaign: get: tags: - Campaign summary: List Campaigns operationId: GetCampaigns parameters: - required: true schema: title: Brandid type: string name: brandId in: query description: Filter results by brand id. - description: The 1-indexed page number to get. The default value is `1`. required: false schema: title: Page type: integer description: The 1-indexed page number to get. The default value is `1`. default: 1 name: page in: query - description: The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`. required: false schema: title: Recordsperpage type: integer description: The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`. default: 10 name: recordsPerPage in: query - name: sort required: false schema: title: Sort description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. type: string enum: - assignedPhoneNumbersCount - -assignedPhoneNumbersCount - campaignId - -campaignId - createdAt - -createdAt - status - -status - tcrCampaignId - -tcrCampaignId default: -createdAt in: query description: Specifies the sort order for results. If not given, results are sorted by createdAt in descending order. example: -assignedPhoneNumbersCount responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CampaignRecordSet_CSP' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Retrieve a list of campaigns associated with a supplied `brandId`. /10dlc/campaign/acceptSharing/{campaignId}: post: tags: - Campaign summary: Accept Shared Campaign description: Manually accept a campaign shared with Telnyx operationId: AcceptCampaign parameters: - description: TCR's ID for the campaign to import required: true schema: title: Campaignid pattern: ^C[A-Z0-9]{5,8}$ type: string description: TCR's ID for the campaign to import name: campaignId in: path responses: '202': description: Successful Response content: application/json: schema: type: object additionalProperties: true example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' /10dlc/campaign/usecase/cost: get: tags: - Campaign summary: Get Campaign Cost operationId: GetCampaignCost parameters: - required: true schema: title: Usecase type: string name: usecase in: query description: Filter results by usecase. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CampaignCost' example: campaignUsecase: Campaignusecase monthlyCost: Monthlycost upFrontCost: Upfrontcost description: Description '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Returns the upfront and monthly cost associated with the selected 10DLC campaign use case. /10dlc/campaign/usecase_cost: get: tags: - Campaign summary: Get Campaign Cost operationId: GetCampaignCost parameters: - required: true schema: title: Usecase type: string name: usecase in: query description: Filter results by usecase. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CampaignCost' example: campaignUsecase: Campaignusecase monthlyCost: Monthlycost upFrontCost: Upfrontcost description: Description '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/campaigns_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse' x-latency-category: responsive description: Retrieve the campaign cost associated with a given 10DLC use case, including any carrier fees. /10dlc/campaign/{campaignId}: delete: tags: - Campaign summary: Deactivate campaign description: Terminate a campaign. Note that once deactivated, a campaign cannot be restored. operationId: DeactivateCampaign parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CampaignDeletionResponse' example: time: 0 record_type: Record Type message: Message '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' get: tags: - Campaign summary: Get campaign operationId: GetCampaign parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxCampaign_CSP' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Retrieve campaign details by `campaignId`. put: tags: - Campaign summary: Update campaign operationId: UpdateCampaign parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateCampaignRequest' example: resellerId: RESELLER sample1: Sample1 sample2: Sample2 sample3: Sample3 sample4: Sample4 sample5: Sample5 messageFlow: Messageflow helpMessage: Helpmessage autoRenewal: true webhookURL: WebhookURL webhookFailoverURL: WebhookURL required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxCampaign_CSP' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Update a campaign's properties by `campaignId`. **Please note:** only sample messages are editable. /10dlc/campaign/{campaignId}/appeal: post: tags: - Campaign summary: Submit campaign appeal for manual review description: 'Submits an appeal for rejected native campaigns in TELNYX_FAILED or MNO_REJECTED status. The appeal is recorded for manual compliance team review and the campaign status is reset to TCR_ACCEPTED. Note: Appeal forwarding is handled manually to allow proper review before incurring upstream charges.' operationId: AppealCampaign parameters: - name: campaignId in: path description: The Telnyx campaign identifier required: true schema: type: string format: uuid example: 5eb13888-32b7-4cab-95e6-d834dde21d64 requestBody: description: Appeal request payload required: true content: application/json: schema: type: object required: - appeal_reason properties: appeal_reason: type: string description: Detailed explanation of why the campaign should be reconsidered and what changes have been made to address the rejection reason. example: The website has been updated to include the required privacy policy and terms of service. responses: '200': description: Appeal recorded successfully. Campaign status updated to TCR_ACCEPTED for manual compliance review. content: application/json: schema: type: object properties: appealed_at: type: string format: date-time description: Timestamp when the appeal was submitted example: appealed_at: '2025-08-06T15:30:45.123456+00:00' '400': description: Campaign not in appealable status or invalid request content: application/json: schema: $ref: '#/components/schemas/10dlc_Error_ca4eb0ad6f' '404': description: Campaign not found content: application/json: schema: $ref: '#/components/schemas/10dlc_Error_ca4eb0ad6f' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' /10dlc/campaign/{campaignId}/mnoMetadata: get: tags: - Campaign summary: Get Campaign Mno Metadata description: Get the campaign metadata for each MNO it was submitted to. operationId: GetCampaignMnoMetadata parameters: - description: ID of the campaign in question required: true schema: title: Campaignid type: string description: ID of the campaign in question name: campaignId in: path responses: '200': description: Successful Response. It constains a map of usecase metadata for each MNO. The key is the network ID of the MNO (e.g. 10017), the value is the mno metadata for the usecase. The metadata may also include some MNO specific fields. content: application/json: schema: $ref: '#/components/schemas/MnoMetadata' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' 5XX: description: Unexpected Error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. /10dlc/campaign/{campaignId}/operationStatus: get: tags: - Campaign summary: Get campaign operation status operationId: GetCampaignOperationStatus parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true example: '10017': APPROVED '10035': REVIEW '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Retrieve campaign's operation status at MNO level. /10dlc/campaign/{campaignId}/osr/attributes: get: tags: - Campaign summary: Get OSR campaign attributes operationId: GetCampaignOsrAttributes parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true example: msg_class: E status: '7' brandId: 00000000-0000-0000-0000-000000000000 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Returns the optional shared-responsibility attributes recorded for the campaign. Use these values to inspect the campaign configuration submitted to the registry. /10dlc/campaign/{campaignId}/osr_attributes: get: tags: - Campaign summary: Get OSR campaign attributes operationId: GetCampaignOsrAttributes parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true example: msg_class: E status: '7' brandId: 00000000-0000-0000-0000-000000000000 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/campaigns_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse' x-latency-category: responsive description: Retrieve the OSR attributes assigned to a 10DLC campaign. /10dlc/campaign/{campaignId}/sharing: get: tags: - Campaign summary: Get Sharing Status operationId: GetCampaignSharingStatus parameters: - description: ID of the campaign in question required: true schema: title: Campaignid type: string description: ID of the campaign in question name: campaignId in: path responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CampaignSharingChain' example: sharedByMe: downstreamCnpId: Downstreamcnpid sharedDate: Shareddate sharingStatus: Sharingstatus statusDate: Statusdate upstreamCnpId: Upstreamcnpid sharedWithMe: downstreamCnpId: Downstreamcnpid sharedDate: Shareddate sharingStatus: Sharingstatus statusDate: Statusdate upstreamCnpId: Upstreamcnpid '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Returns whether the campaign is configured for partner sharing and the current sharing state. /10dlc/campaignBuilder: post: tags: - Campaign summary: Submit Campaign operationId: PostCampaign parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/CampaignRequest' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxCampaign_CSP' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/10dlc_Error_ca4eb0ad6f' '402': description: Insufficient Funds content: application/json: schema: $ref: '#/components/schemas/10dlc_Error_ca4eb0ad6f' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Before creating a campaign, use the [Qualify By Usecase endpoint](https://developers.telnyx.com/api-reference/campaign/qualify-by-usecase) to ensure that the brand you want to assign a new campaign to is qualified for the desired use case of that campaign. **Please note:** After campaign creation, you'll only be able to edit the campaign's sample messages. Creating a campaign will entail an upfront, non-refundable three month's cost that will depend on the campaign's use case ([see 10DLC Costs section for details](https://developers.telnyx.com/api-reference/campaign/get-campaign-cost)). /10dlc/campaignBuilder/brand/{brandId}/usecase/{usecase}: get: tags: - Campaign summary: Qualify By Usecase operationId: GetUsecaseQualification parameters: - required: true schema: title: Usecase type: string name: usecase in: path description: Unique identifier of the usecase. - required: true schema: title: Brandid type: string name: brandId in: path description: Unique identifier of the brand. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UsecaseMetadata' example: annualFee: 0 maxSubUsecases: 0 minSubUsecases: 0 monthlyFee: 0 quarterlyFee: 0 usecase: Usecase '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: This endpoint allows you to see whether or not the supplied brand is suitable for your desired campaign use case. /10dlc/enum/{endpoint}: get: tags: - Enum summary: Get Enum operationId: GetEnumEndpoint parameters: - required: true schema: title: Endpoint type: string enum: - mno - optionalAttributes - usecase - vertical - altBusinessIdType - brandIdentityStatus - brandRelationship - campaignStatus - entityType - extVettingProvider - vettingStatus - brandStatus - operationStatus - approvedPublicCompany - stockExchange - vettingClass name: endpoint in: path description: Unique identifier of the endpoint. responses: '200': description: Successful Response content: application/json: schema: oneOf: - $ref: '#/components/schemas/EnumStringListResponse' - $ref: '#/components/schemas/EnumObjectListResponse' - $ref: '#/components/schemas/EnumObjectToStringResponse' - $ref: '#/components/schemas/EnumObjecToObjecttResponse' - $ref: '#/components/schemas/EnumPaginatedResponse' '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. 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Returns the accepted values for the selected 10DLC enumeration endpoint. Use these values when constructing brand and campaign requests. /10dlc/partnerCampaign/sharedByMe: get: tags: - Shared Campaigns summary: List shared partner campaigns description: 'Get all partner campaigns you have shared to Telnyx in a paginated fashion This endpoint is currently limited to only returning shared campaigns that Telnyx has accepted. In other words, shared but pending campaigns are currently omitted from the response from this endpoint.' operationId: GetPartnerCampaignsSharedByUser parameters: - description: The 1-indexed page number to get. The default value is `1`. required: false schema: title: Page type: integer description: The 1-indexed page number to get. The default value is `1`. default: 1 name: page in: query - description: The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`. required: false schema: title: Recordsperpage type: integer description: The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`. default: 10 name: recordsPerPage in: query responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SharedCampaignRecordSet' example: page: 0 records: - brandId: Brandid campaignId: Campaignid createDate: Createdate status: Status usecase: Usecase totalRecords: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' /10dlc/partnerCampaign/{campaignId}/sharing: get: tags: - Shared Campaigns summary: Get Sharing Status operationId: GetPartnerCampaignSharingStatus parameters: - description: ID of the campaign in question required: true schema: title: Campaignid type: string description: ID of the campaign in question name: campaignId in: path responses: '200': description: Successful Response content: application/json: schema: title: Response Get Sharing Status Public Partnercampaign Campaignid Sharing Get type: object additionalProperties: $ref: '#/components/schemas/CampaignSharingStatus' example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Returns the partner-sharing state for the specified campaign. /10dlc/partner_campaigns: get: tags: - Shared Campaigns summary: List Shared Campaigns operationId: GetSharedCampaigns parameters: - description: The 1-indexed page number to get. The default value is `1`. required: false schema: title: Page type: integer description: The 1-indexed page number to get. The default value is `1`. default: 1 name: page in: query - description: The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`. required: false schema: title: Recordsperpage type: integer description: The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`. default: 10 name: recordsPerPage in: query - name: sort required: false schema: title: Sort description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. type: string enum: - assignedPhoneNumbersCount - -assignedPhoneNumbersCount - brandDisplayName - -brandDisplayName - tcrBrandId - -tcrBrandId - tcrCampaignId - -tcrCampaignId - createdAt - -createdAt - campaignStatus - -campaignStatus default: -createdAt in: query description: Specifies the sort order for results. If not given, results are sorted by createdAt in descending order. example: -assignedPhoneNumbersCount responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxDownstreamCampaignRecordSet' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: 'Retrieve all partner campaigns you have shared to Telnyx in a paginated fashion. This endpoint is currently limited to only returning shared campaigns that Telnyx has accepted. In other words, shared but pending campaigns are currently omitted from the response from this endpoint.' /10dlc/partner_campaigns/{campaignId}: get: tags: - Shared Campaigns summary: Get Single Shared Campaign operationId: GetSharedCampaign parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxDownstreamCampaign' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Retrieve campaign details by `campaignId`. patch: tags: - Shared Campaigns summary: Update Single Shared Campaign operationId: UpdateSharedCampaign parameters: - required: true schema: title: Campaignid type: string name: campaignId in: path description: Unique identifier of the campaign. requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdatePartnerCampaignRequest' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxDownstreamCampaign' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/10dlc_HTTPValidationError' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Update campaign details by `campaignId`. **Please note:** Only webhook urls are editable. /10dlc/phoneNumberAssignmentByProfile: post: tags: - Bulk Phone Number Campaigns summary: Assign Messaging Profile To Campaign operationId: PostAssignMessagingProfileToCampaign parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/AssignProfileToCampaignRequest' required: true responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssignProfileToCampaignResponse' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' '500': description: Error searching for phone numbers content: application/json: schema: $ref: '#/components/schemas/SettingsDataErrorMessage' description: This endpoint allows you to link all phone numbers associated with a Messaging Profile to a campaign. **Please note:** if you want to assign phone numbers to a campaign that you did not create with Telnyx 10DLC services, this endpoint allows that provided that you've shared the campaign with Telnyx. In this case, only provide the parameter, `tcrCampaignId`, and not `campaignId`. In all other cases (where the campaign you're assigning was created with Telnyx 10DLC services), only provide `campaignId`, not `tcrCampaignId`. /10dlc/phoneNumberAssignmentByProfile/{taskId}: get: tags: - Bulk Phone Number Campaigns summary: Get Assignment Task Status operationId: GetAssignmentTaskStatus parameters: - required: true schema: title: Taskid type: string name: taskId in: path description: Unique identifier of the task. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssignmentTaskStatusResponse' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Check the status of the task associated with assigning all phone numbers on a messaging profile to a campaign by `taskId`. /10dlc/phoneNumberAssignmentByProfile/{taskId}/phoneNumbers: get: tags: - Bulk Phone Number Campaigns summary: Get Phone Number Status operationId: GetPhoneNumberStatus parameters: - required: true schema: title: Taskid type: string name: taskId in: path description: Unique identifier of the task. - required: false schema: title: Recordsperpage default: 20 type: integer name: recordsPerPage in: query description: Number of records to return per page. - required: false schema: title: Page default: 1 type: integer name: page in: query description: Page number to retrieve (1-based). responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PhoneNumberStatusResponsePaginated' '422': $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Check the status of the individual phone number/campaign assignments associated with the supplied `taskId`. /10dlc/phone_number_campaigns: get: tags: - Phone Number Campaigns summary: List phone number campaigns operationId: GetAllPhoneNumberCampaigns parameters: - required: false schema: title: Recordsperpage default: 20 type: integer name: recordsPerPage in: query description: Number of records to return per page. - required: false schema: title: Page default: 1 type: integer name: page in: query description: Page number to retrieve (1-based). - $ref: '#/components/parameters/10dlc_FilterConsolidated' - name: sort required: false schema: title: Sort description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. type: string enum: - assignmentStatus - -assignmentStatus - createdAt - -createdAt - phoneNumber - -phoneNumber default: -createdAt description: Specifies the sort order for results. If not given, results are sorted by createdAt in descending order. example: -phoneNumber in: query responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PhoneNumberCampaignPaginated' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Returns phone-number-to-campaign assignments for the authenticated account. Apply the documented filters and pagination parameters to narrow the result set. post: tags: - Phone Number Campaigns summary: Create New Phone Number Campaign operationId: CreatePhoneNumberCampaign parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/PhoneNumberCampaignCreate' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PhoneNumberCampaign' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Assigns a phone number to a 10DLC campaign. The assignment controls which registered campaign is used for traffic from that number. /10dlc/phone_number_campaigns/{phoneNumber}: delete: tags: - Phone Number Campaigns summary: Delete Phone Number Campaign description: This endpoint allows you to remove a campaign assignment from the supplied `phoneNumber`. operationId: DeletePhoneNumberCampaign parameters: - required: true schema: title: Phonenumber type: string name: phoneNumber in: path description: Unique identifier of the phone number. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PhoneNumberCampaign' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' get: tags: - Phone Number Campaigns summary: Get Single Phone Number Campaign operationId: GetSinglePhoneNumberCampaign parameters: - required: true schema: title: Phonenumber type: string name: phoneNumber in: path description: Unique identifier of the phone number. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PhoneNumberCampaign' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Retrieve an individual phone number/campaign assignment by `phoneNumber`. put: tags: - Phone Number Campaigns summary: Update Phone Number Campaign operationId: PutPhoneNumberCampaign parameters: - required: true schema: title: Phonenumber type: string name: phoneNumber in: path description: Unique identifier of the phone number. requestBody: content: application/json: schema: $ref: '#/components/schemas/PhoneNumberCampaignCreate' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PhoneNumberCampaign' 4XX: $ref: '#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f' description: Replaces the 10DLC campaign assignment for the specified phone number. /access_ip_address: get: summary: List all Access IP Addresses operationId: ListAccessIpAddresses tags: - IP Addresses parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[ip_source], filter[ip_address], filter[created_at]. Supports complex bracket operations for dynamic filtering.' schema: type: object properties: ip_source: type: string description: Filter by IP source ip_address: type: string description: Filter by IP address created_at: oneOf: - type: string format: date-time description: Filter by exact creation date-time - type: object title: DateRangeFilter properties: gt: type: string format: date-time description: Filter for creation date-time greater than lt: type: string format: date-time description: Filter for creation date-time less than gte: type: string format: date-time description: Filter for creation date-time greater than or equal to lte: type: string format: date-time description: Filter for creation date-time less than or equal to additionalProperties: false description: Date range filtering operations additionalProperties: true examples: filter[ip_source]=cloudflare: value: ip_source: cloudflare summary: Filter access IP addresses by source 'cloudflare' filter[ip_address]=192.168.1.1: value: ip_address: 192.168.1.1 summary: Filter by specific IP address filter[created_at][gt]=2023-01-01T00:00:00Z: value: created_at: gt: '2023-01-01T00:00:00Z' summary: Filter IP addresses created after the specified date-time filter[created_at][lt]=2023-12-31T23:59:59Z: value: created_at: lt: '2023-12-31T23:59:59Z' summary: Filter IP addresses created before the specified date-time Complex filtering example: value: ip_source: cloudflare created_at: gt: '2023-01-01T00:00:00Z' lt: '2023-12-31T23:59:59Z' summary: 'Combine multiple filters: cloudflare source IPs created within 2023' - 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 default: 1 size: maximum: 250 type: integer default: 20 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 Response content: application/json: schema: $ref: '#/components/schemas/AccessIPAddressListResponseSchema' example: data: - id: Id ip_address: Ip Address source: Source status: pending description: Description user_id: User Id created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. description: Retrieve a paginated list of access IP addresses configured on your account. post: summary: Create new Access IP Address operationId: CreateAccessIpAddress tags: - IP Addresses requestBody: content: application/json: schema: $ref: '#/components/schemas/AccessIPAddressPOST' example: ip_address: Ip Address description: Description required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AccessIPAddressResponseSchema' example: id: Id ip_address: Ip Address source: Source status: pending description: Description user_id: User Id created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. description: Create a new access IP address entry on your account. /access_ip_address/{access_ip_address_id}: delete: summary: Delete access IP address operationId: DeleteAccessIpAddress tags: - IP Addresses parameters: - required: true schema: type: string name: access_ip_address_id in: path description: Unique identifier of the access ip address. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AccessIPAddressResponseSchema' example: id: Id ip_address: Ip Address source: Source status: pending description: Description user_id: User Id created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '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. description: Delete an access IP address entry from your account. get: summary: Retrieve an access IP address operationId: GetAccessIpAddress tags: - IP Addresses parameters: - required: true schema: type: string name: access_ip_address_id in: path description: Unique identifier of the access ip address. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AccessIPAddressResponseSchema' example: id: Id ip_address: Ip Address source: Source status: pending description: Description user_id: User Id created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '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. description: Retrieve the details of a specific access IP address. /access_ip_ranges: get: summary: List all Access IP Ranges operationId: ListAccessIpRanges tags: - IP Ranges parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[cidr_block], filter[cidr_block][startswith], filter[cidr_block][endswith], filter[cidr_block][contains], filter[created_at]. Supports complex bracket operations for dynamic filtering.' schema: type: object properties: cidr_block: oneOf: - type: string description: Filter by exact CIDR block match - type: object title: CidrBlockPatternFilter properties: startswith: type: string description: Filter CIDR blocks starting with the specified string endswith: type: string description: Filter CIDR blocks ending with the specified string contains: type: string description: Filter CIDR blocks containing the specified string additionalProperties: false description: CIDR block pattern matching operations created_at: oneOf: - type: string format: date-time description: Filter by exact creation date-time - type: object title: DateRangeFilter properties: gt: type: string format: date-time description: Filter for creation date-time greater than lt: type: string format: date-time description: Filter for creation date-time less than gte: type: string format: date-time description: Filter for creation date-time greater than or equal to lte: type: string format: date-time description: Filter for creation date-time less than or equal to additionalProperties: false description: Date range filtering operations additionalProperties: true examples: filter[cidr_block]=192.168.1.0/24: value: cidr_block: 192.168.1.0/24 summary: Filter by exact CIDR block match filter[cidr_block][startswith]=192.168: value: cidr_block: startswith: '192.168' summary: Filter CIDR blocks starting with '192.168' filter[cidr_block][endswith]=/24: value: cidr_block: endswith: /24 summary: Filter CIDR blocks ending with '/24' filter[cidr_block][contains]=10.0: value: cidr_block: contains: '10.0' summary: Filter CIDR blocks containing '10.0' filter[created_at][gt]=2023-01-01T00:00:00Z: value: created_at: gt: '2023-01-01T00:00:00Z' summary: Filter IP ranges created after the specified date-time filter[created_at][lt]=2023-12-31T23:59:59Z: value: created_at: lt: '2023-12-31T23:59:59Z' summary: Filter IP ranges created before the specified date-time Complex filtering example: value: cidr_block: startswith: '10.0' endswith: /16 created_at: gt: '2023-01-01T00:00:00Z' lt: '2023-12-31T23:59:59Z' summary: 'Combine multiple filters: CIDR blocks starting with ''10.0'' and ending with ''/16'', created within 2023' - 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 default: 1 size: maximum: 250 type: integer default: 20 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 Response content: application/json: schema: $ref: '#/components/schemas/AccessIPRangeListResponseSchema' example: data: - id: Id cidr_block: Cidr Block status: pending description: Description user_id: User Id created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. description: Retrieve a paginated list of access IP ranges configured on your account. post: summary: Create new Access IP Range operationId: CreateAccessIPRange tags: - IP Ranges requestBody: content: application/json: schema: $ref: '#/components/schemas/AccessIPRangePOST' example: cidr_block: Cidr Block description: Description required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AccessIPRangeResponseSchema' example: id: Id cidr_block: Cidr Block status: pending description: Description user_id: User Id created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. description: Create a new access IP range on your account. /access_ip_ranges/{access_ip_range_id}: delete: summary: Delete access IP ranges operationId: DeleteAccessIpRange tags: - IP Ranges parameters: - required: true schema: type: string name: access_ip_range_id in: path description: Unique identifier of the access ip range. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AccessIPRangeResponseSchema' example: id: Id cidr_block: Cidr Block status: pending description: Description user_id: User Id created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '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. description: Delete an access IP range from your account. /actions/purchase/esims: post: x-latency-category: background summary: Purchase eSIMs description: 'Purchases and registers the specified amount of eSIMs to the current user''s account.

If sim_card_group_id is provided, the eSIMs will be associated with that group. Otherwise, the default group for the current user will be used.

' operationId: PurchaseESim tags: - SIM Cards requestBody: content: application/json: schema: $ref: '#/components/schemas/ESimPurchase' required: true responses: '202': description: Successful response content: application/json: schema: type: object properties: data: description: Successfully registered SIM cards. type: array items: $ref: '#/components/schemas/SimpleSIMCard' errors: type: array items: $ref: '#/components/schemas/wireless_Error_c5290d5308' '401': $ref: '#/components/responses/wireless_Unauthorized' /actions/register/sim_cards: post: x-latency-category: background summary: Register SIM cards description: 'Register the SIM cards associated with the provided registration codes to the current user''s account.

If sim_card_group_id is provided, the SIM cards will be associated with that group. Otherwise, the default group for the current user will be used.

' operationId: RegisterSimCards tags: - SIM Cards requestBody: content: application/json: schema: $ref: '#/components/schemas/SIMCardRegistration' required: true responses: '202': description: Successful response content: application/json: schema: type: object properties: data: description: Successfully registered SIM cards. type: array items: $ref: '#/components/schemas/SimpleSIMCard' errors: type: array items: $ref: '#/components/schemas/wireless_Error_c5290d5308' '401': $ref: '#/components/responses/wireless_Unauthorized' /addresses: get: description: Returns a paginated list of the addresses on your account, with support for filtering and sorting. summary: List all addresses operationId: FindAddresses tags: - Addresses x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/PageConsolidated' - $ref: '#/components/parameters/FilterConsolidated' - $ref: '#/components/parameters/SortAddress' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Address' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found post: description: 'Creates a new address on your account from the provided details, for use with services that require a physical address such as emergency calling and regulatory compliance. By default, the new record is validated for emergency use at creation time. If the address fails validation, no record is created and the request is rejected with a 422 response; the `errors` array includes a suggested value for each offending field when one is available. Set `validate_address` to `false` to skip validation at creation, for example when the address was already validated with the Validate an address action. The record is then created without emergency validation: if it is not valid it will not be able to be used for emergency services (such as a phone number''s emergency address), and because address records cannot be updated, a new record has to be created to correct it.' summary: Creates an address operationId: CreateAddress tags: - Addresses x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be defined during address creation required: true content: application/json: schema: $ref: '#/components/schemas/AddressCreate' responses: '200': description: 'Successful response. `validate_address` on the returned record indicates whether it was validated for emergency use at creation: created with the default `true`, the record passed emergency validation; created with `false`, validation was skipped during this creation request, and the address may have been validated separately. This flag is not a current validity status; emergency use still requires a valid address.' content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Address' '422': $ref: '#/components/responses/UnprocessableEntity' /addresses/actions/validate: post: description: Validates an address for emergency services. summary: Validate an address operationId: ValidateAddress tags: - Addresses parameters: [] requestBody: description: Parameters that can be defined during address validation required: true content: application/json: schema: $ref: '#/components/schemas/ValidateAddressRequest' responses: '200': description: Action response content: application/json: schema: type: object title: Validate address action response properties: data: $ref: '#/components/schemas/ValidateAddressResult' '422': $ref: '#/components/responses/UnprocessableEntity' /addresses/{id}: delete: description: Permanently deletes the specified address from your account. summary: Deletes an address operationId: DeleteAddress tags: - Addresses parameters: - name: id in: path description: address ID required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Address' '401': description: Unauthorized '404': description: Resource not found '422': $ref: '#/components/responses/UnprocessableEntity' get: description: Retrieves the details of an existing address. summary: Retrieve an address operationId: GetAddress tags: - Addresses parameters: - name: id in: path description: address ID required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Address' '401': description: Unauthorized '404': description: Resource not found '422': $ref: '#/components/responses/UnprocessableEntity' /addresses/{id}/actions/accept_suggestions: post: summary: Accepts this address suggestion as a new emergency address for Operator Connect and finishes the uploads of the numbers associated with it to Microsoft. operationId: acceptAddressSuggestions tags: - Addresses parameters: - in: path name: id required: true schema: type: string format: uuid description: The UUID of the address that should be accepted. requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/AcceptSuggestionsRequest' example: id: string responses: '200': description: This address suggestion has already been accepted. content: application/json: schema: $ref: '#/components/schemas/AddressSuggestionResponse' example: data: accepted: false id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: address_suggestion '202': description: This address suggestion was accepted. The numbers associated to it will resume processing in the background. content: application/json: schema: $ref: '#/components/schemas/AddressSuggestionResponse' '404': description: Address not found or not accessible by the user. content: application/json: schema: $ref: '#/components/schemas/ResourceNotFoundError' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. description: Accept the validated address suggestion for this address, replacing the original values, and finish uploading the numbers associated with it to Microsoft for Operator Connect. /advanced_orders: get: summary: List Advanced Orders tags: - Advanced Number Orders operationId: list_advanced_orders_v2 responses: '200': $ref: '#/components/responses/ListAdvancedOrderResponse' '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 advanced number orders associated with the account. Each result includes the order configuration and its current state. post: summary: Create Advanced Order operationId: create_advanced_order_v2 tags: - Advanced Number Orders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AdvancedOrderRequest' responses: '200': description: An Advanced Order Response content: application/json: schema: $ref: '#/components/schemas/AdvancedOrder' '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: Creates an advanced number order from the requested order configuration. The response contains the resulting advanced order and its initial state. /advanced_orders/{advanced-order-id}/requirement_group: patch: summary: Update Advanced Order operationId: update_advanced_order_v2 parameters: - name: advanced-order-id in: path description: Unique identifier of the advanced order. required: true schema: type: string format: uuid title: Order Id tags: - Advanced Number Orders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AdvancedOrderRequest' responses: '200': $ref: '#/components/responses/AdvancedOrderResponse' '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 requirement-group configuration for the specified advanced number order. The response contains the updated advanced order. /advanced_orders/{order_id}: get: summary: Get Advanced Order operationId: get_advanced_order_v2 parameters: - name: order_id in: path description: Unique identifier of the order. required: true schema: type: string format: uuid title: Order Id tags: - Advanced Number Orders responses: '200': $ref: '#/components/responses/AdvancedOrderResponse' '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 advanced number order identified by `order_id`, including its configuration and current state. /ai/anthropic/v1/messages: post: tags: - Anthropic Messages summary: Create a message (Anthropic-compatible) description: 'Send a message to a language model using the Anthropic Messages API format. This endpoint is compatible with the [Anthropic Messages API](https://docs.anthropic.com/en/api/messages) and may be used with the Anthropic JS or Python SDK by setting the base URL to `https://api.telnyx.com/v2/ai/anthropic`. The endpoint translates Anthropic-format requests into Telnyx''s inference internals, then translates the response back to the Anthropic message shape. Streaming responses use Anthropic SSE event types (`message_start`, `content_block_start`, `content_block_delta`, `content_block_stop`, `message_delta`, `message_stop`).' operationId: create_anthropic_message requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AnthropicMessageRequest' example: model: zai-org/GLM-5.3-Flash system: You are a friendly chatbot. messages: - role: user content: Hello, world! max_tokens: 1024 responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true description: 'An Anthropic-format message response with `type: "message"`, `role`, `content`, `stop_reason`, `stop_sequence`, and `usage`. When `stream` is true, the response is a text/event-stream of Anthropic SSE events.' example: id: msg_01B8b1f2a3c9d4e5f6a type: message role: assistant model: zai-org/GLM-5.3-Flash content: - type: text text: Telnyx provides carrier-grade voice, messaging, and AI inference through one API. stop_reason: end_turn stop_sequence: null usage: input_tokens: 24 output_tokens: 18 text/event-stream: schema: type: string description: Anthropic-format Server-Sent Events stream. '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants: get: tags: - Assistants summary: List assistants description: Retrieve a list of all AI Assistants configured by the user. operationId: get_assistants_public_assistants_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssistantsListData' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Create an assistant description: Creates a new AI assistant from the provided configuration, including its model, instructions, and attached tools, and returns the created assistant. operationId: create_new_assistant_public_assistants_post parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAssistantRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: 'Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. The assistant configuration is validated too: enabling `privacy_settings.in_transit_data_locality` is refused when the organization''s data-locality region has no in-region inference, or when any model the assistant could use — its `model`, its `fallback_config`, or a conversation-flow node override — is not Telnyx-hosted.' content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/deleted: get: tags: - Assistants summary: List deleted assistants description: 'List the organization''s soft-deleted assistants in the Recently Deleted list. Each entry includes `deleted_at` and `permanently_deleted_at`, the point after which the assistant is erased automatically and can no longer be restored.' operationId: get_deleted_assistants_public_assistants_deleted_get parameters: - name: page[number] in: query description: Page number to retrieve (1-based). required: false schema: type: integer minimum: 1 default: 1 title: Page[Number] - name: page[size] in: query description: Number of items to return per page. required: false schema: type: integer maximum: 100 minimum: 1 default: 20 title: Page[Size] responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PaginatedDeletedAssistantsResponse' example: data: - id: assistant_7f3c2a1b name: Support Assistant created_at: '2025-08-14T09:24:11.000000Z' model: telnyx-gpt instructions: You are a support assistant. deleted_at: '2026-10-02T00:46:15.245000Z' permanently_deleted_at: '2026-11-01T00:46:15.245000Z' meta: total_pages: 1 total_results: 1 page_number: 1 page_size: 20 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/import: post: tags: - Assistants summary: Import assistants from external provider description: Import assistants from external providers. Any assistant that has already been imported will be overwritten with its latest version from the importing provider. operationId: import_assistants_public_assistants_import_post parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ImportAssistantsRequest' example: provider: elevenlabs api_key_ref: string import_ids: - string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssistantsListData' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/tags: get: tags: - Assistants summary: Get All Tags operationId: get_all_assistant_tags responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TagsResponse' example: tags: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Retrieve all tags that have been applied to your AI assistants. /ai/assistants/tests: get: tags: - Assistants summary: List assistant tests with pagination description: Retrieves a paginated list of assistant tests with optional filtering capabilities operationId: get_assistant_tests_public_assistants_tests_get parameters: - name: test_suite in: query required: false schema: type: string description: Filter tests by test suite name title: Test Suite description: Filter tests by test suite name - name: telnyx_conversation_channel in: query required: false schema: type: string description: Filter tests by communication channel (e.g., 'web_chat', 'sms') title: Telnyx Conversation Channel description: Filter tests by communication channel (e.g., 'web_chat', 'sms') - name: destination in: query required: false schema: type: string description: Filter tests by destination (phone number, webhook URL, etc.) title: Destination description: Filter tests by destination (phone number, webhook URL, etc.) - 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 maximum: 100 minimum: 1 description: Number of tests to return per page (1-100) default: 20 title: Page[Size] number: type: integer minimum: 1 description: Page number to retrieve (1-based indexing) default: 1 title: Page[Number] responses: '200': description: Returns paginated test list with metadata for navigation and filtering content: application/json: schema: $ref: '#/components/schemas/PaginatedAssistantTestList' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Create a new assistant test description: Creates a comprehensive test configuration for evaluating AI assistant performance operationId: create_assistant_test_public_assistants_tests_post parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAssistantTestRequest' responses: '201': description: Returns the created test configuration with assigned test ID content: application/json: schema: $ref: '#/components/schemas/AssistantTestResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/tests/test-suites: get: tags: - Assistants summary: Get all test suite names description: Retrieves a list of all distinct test suite names available to the current user operationId: fetch_test_suites_public_assistants_tests_test_suites_get responses: '200': description: Returns an array of unique test suite names for filtering and organization content: application/json: schema: $ref: '#/components/schemas/TestSuitesResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/tests/test-suites/{suite_name}/runs: get: tags: - Assistants summary: Get test suite run history description: Retrieves paginated history of test runs for a specific test suite with filtering options operationId: get_test_suite_runs_for_test_public_assistants_tests_test_suites__suite_name__runs_get parameters: - name: suite_name in: path description: Name of the suite. required: true schema: type: string title: Suite Name - name: status in: query required: false schema: type: string description: Filter runs by execution status (pending, running, completed, failed, timeout) title: Status description: Filter runs by execution status (pending, running, completed, failed, timeout) - name: test_suite_run_id in: query required: false schema: type: string description: Filter runs by specific suite execution batch ID title: Test Suite Run Id description: Filter runs by specific suite execution batch ID - 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 maximum: 100 minimum: 1 description: Number of test runs to return per page (1-100) default: 20 title: Page[Size] number: type: integer minimum: 1 description: Page number to retrieve (1-based indexing) default: 1 title: Page[Number] responses: '200': description: Returns paginated list of test runs within the specified suite content: application/json: schema: $ref: '#/components/schemas/PaginatedTestRunList' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Trigger test suite execution description: Executes all tests within a specific test suite as a batch operation operationId: trigger_test_suite_runs_public_assistants_tests_test_suites__suite_name__runs_post parameters: - name: suite_name in: path description: Name of the suite. required: true schema: type: string title: Suite Name - $ref: '#/components/parameters/IdempotencyKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/TriggerTestSuiteRunsRequest' title: Request responses: '201': description: Returns array of created test runs for all tests in the suite content: application/json: schema: type: array items: $ref: '#/components/schemas/TestRunResponse' title: Response Trigger Test Suite Runs Public Assistants Tests Test Suites Suite Name Runs Post headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/tests/{test_id}: delete: tags: - Assistants summary: Delete an assistant test description: Permanently removes an assistant test and all associated data operationId: delete_assistant_test_public_assistants_tests__test_id__delete parameters: - name: test_id in: path description: Unique identifier of the test. required: true schema: type: string title: Test Id responses: '200': description: Returns success status when test is successfully deleted '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Assistants summary: Get assistant test by ID description: Retrieves detailed information about a specific assistant test operationId: get_assistant_test_public_assistants_tests__test_id__get parameters: - name: test_id in: path description: Unique identifier of the test. required: true schema: type: string title: Test Id responses: '200': description: Returns complete test configuration including rubric, schedule, and metadata content: application/json: schema: $ref: '#/components/schemas/AssistantTestResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Assistants summary: Update an assistant test description: Updates an existing assistant test configuration with new settings operationId: update_assistant_test_public_assistants_tests__test_id__put parameters: - name: test_id in: path description: Unique identifier of the test. required: true schema: type: string title: Test Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssistantTestRequest' example: name: Name description: Description telnyx_conversation_channel: phone_call destination: Destination max_duration_seconds: 30 test_suite: Test Suite instructions: Instructions rubric: - name: string criteria: string responses: '200': description: Returns the updated test configuration with all changes applied content: application/json: schema: $ref: '#/components/schemas/AssistantTestResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/tests/{test_id}/runs: get: tags: - Assistants summary: Get test run history for a specific test description: Retrieves paginated execution history for a specific assistant test with filtering options operationId: get_test_runs_for_test_public_assistants_tests__test_id__runs_get parameters: - name: test_id in: path description: Unique identifier of the test. required: true schema: type: string title: Test Id - name: status in: query required: false schema: type: string description: Filter runs by execution status (pending, running, completed, failed, timeout) title: Status description: Filter runs by execution status (pending, running, completed, failed, timeout) - 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 maximum: 100 minimum: 1 description: Number of test runs to return per page (1-100) default: 20 title: Page[Size] number: type: integer minimum: 1 description: Page number to retrieve (1-based indexing) default: 1 title: Page[Number] responses: '200': description: Returns paginated list of test runs for the specified test content: application/json: schema: $ref: '#/components/schemas/PaginatedTestRunList' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Trigger a manual test run description: Initiates immediate execution of a specific assistant test operationId: trigger_test_run_public_assistants_tests__test_id__runs_post parameters: - name: test_id in: path description: Unique identifier of the test. required: true schema: type: string title: Test Id - $ref: '#/components/parameters/IdempotencyKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/TriggerTestRunRequest' title: Request responses: '201': description: Returns the created test run with execution details and status content: application/json: schema: $ref: '#/components/schemas/TestRunResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/tests/{test_id}/runs/{run_id}: get: tags: - Assistants summary: Get specific test run details description: Retrieves detailed information about a specific test run execution operationId: get_test_run_public_assistants_tests__test_id__runs__run_id__get parameters: - name: test_id in: path description: Unique identifier of the test. required: true schema: type: string title: Test Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string title: Run Id responses: '200': description: Returns complete test run details including results, logs, and performance metrics content: application/json: schema: $ref: '#/components/schemas/TestRunResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}: delete: tags: - Assistants summary: Delete an assistant description: 'Delete an AI Assistant by `assistant_id`. By default this performs a soft delete: the assistant moves to the Recently Deleted list and stays restorable for 30 days, after which it is permanently deleted automatically. The assistant''s versions and TeXML application are preserved during the retention window. Pass `hard_delete=true` to skip the retention window and permanently delete the assistant immediately. A hard delete erases the assistant and all of its versions, and deletes its TeXML application unless phone numbers are still assigned to it. It does not delete conversations, recordings, shared tools the assistant referenced, or knowledge-base embeddings. Deletion fails with `400` if other assistants reference this one through a handoff tool or a conversation-flow edge — remove those references first.' operationId: delete_assistant_public_assistants__assistant_id__delete parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: hard_delete in: query description: Permanently delete the assistant immediately instead of soft-deleting it to the Recently Deleted list, where it stays restorable for 30 days. required: false schema: type: boolean default: false title: Hard Delete responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssistantDeletedResponse' example: id: assistant_7f3c2a1b object: assistant.deleted deleted: true '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '400': description: 'Bad Request (code 10015). Another assistant depends on this one: a handoff tool points to it, or a conversation-flow edge hands off to it. The detail names the referencing assistants; remove those references and retry.' content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: 'Cannot delete assistant assistant_7f3c2a1b. The following assistant(s) have handoff tools pointing to it: ''Billing Bot'' (assistant_9c1d2e3f). Please remove these handoff tools before deleting.' get: tags: - Assistants summary: Get an assistant description: Retrieve an AI Assistant configuration by `assistant_id`. operationId: get_assistant_public_assistants__assistant_id__get parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: fetch_dynamic_variables_from_webhook in: query description: Whether to fetch dynamic variables from the configured webhook. required: false schema: type: boolean default: false title: Fetch Dynamic Variables From Webhook - name: from in: query description: Start of the filter range. required: false schema: type: string title: From - name: to in: query description: End of the filter range. required: false schema: type: string title: To - name: call_control_id in: query description: Filter results by call control id. required: false schema: type: string title: Call Control Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Update an assistant description: 'Updates the specified AI assistant''s attributes and returns the updated assistant. The request can also control how the change is promoted across assistant versions. Every update saves a new version, and an assistant keeps at most 10 versions: once it has more, the oldest versions are permanently deleted, except the main version and any version referenced by a traffic distribution rule.' operationId: update_assistant_public_assistants__assistant_id__post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssistantRequestWithPromotion' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' '400': description: Bad Request. The resulting assistant configuration was rejected. For example, enabling `privacy_settings.in_transit_data_locality` is refused when the organization's data-locality region has no in-region inference, or when any model the assistant could use — its `model`, its `fallback_config`, or a conversation-flow node override — is not Telnyx-hosted. The response detail names the model and where it is configured. Validation runs against the merged result of the update, not only the fields sent. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/canary-deploys: delete: tags: - Assistants summary: Delete Canary Deploy description: 'Endpoint to delete a canary deploy configuration for an assistant. Removes all canary deploy configurations for the specified assistant.' operationId: delete_canary_deploy_assistants__assistant_id__canary_deploys_delete parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Assistants summary: Get Canary Deploy description: 'Endpoint to get a canary deploy configuration for an assistant. Retrieves the current canary deploy configuration with all version IDs and their traffic percentages for the specified assistant.' operationId: get_canary_deploy_assistants__assistant_id__canary_deploys_get parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CanaryDeployResponse' example: assistant_id: Assistant Id rules: - match: - attribute: Attribute operator: in values: - string serve: version_id: Version Id rollout: - version_id: Version Id weight: 0 created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Create Canary Deploy description: 'Endpoint to create a canary deploy configuration for an assistant. Creates a new canary deploy configuration with multiple version IDs and their traffic percentages for A/B testing or gradual rollouts of assistant versions.' operationId: create_canary_deploy_assistants__assistant_id__canary_deploys_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CanaryDeployRequest' example: rules: - match: - attribute: Attribute operator: in values: - string serve: version_id: Version Id rollout: - version_id: Version Id weight: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CanaryDeployResponse' example: assistant_id: Assistant Id rules: - match: - attribute: Attribute operator: in values: - string serve: version_id: Version Id rollout: - version_id: Version Id weight: 0 created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' put: tags: - Assistants summary: Update Canary Deploy description: "Endpoint to update a canary deploy configuration for an assistant.\n\nUpdates the existing canary deploy\ \ configuration with new version IDs and percentages.\n All old versions and percentages are replaces by new ones\ \ from this request." operationId: update_canary_deploy_assistants__assistant_id__canary_deploys_put parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CanaryDeployRequest' example: rules: - match: - attribute: Attribute operator: in values: - string serve: version_id: Version Id rollout: - version_id: Version Id weight: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CanaryDeployResponse' example: assistant_id: Assistant Id rules: - match: - attribute: Attribute operator: in values: - string serve: version_id: Version Id rollout: - version_id: Version Id weight: 0 created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/chat: post: tags: - Assistants summary: Assistant Chat description: This endpoint allows a client to send a chat message to a specific AI Assistant. The assistant processes the message and returns a relevant reply based on the current conversation context. Refer to the Conversation API to [create a conversation](https://developers.telnyx.com/api-reference/conversations/create-a-conversation), [filter existing conversations](https://developers.telnyx.com/api-reference/conversations/list-conversations), [fetch messages for a conversation](https://developers.telnyx.com/api-reference/conversations/get-conversation-messages), and [manually add messages to a conversation](https://developers.telnyx.com/api-reference/conversations/create-message). operationId: assistant_chat_public_assistants__assistant_id__chat_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssistantChatReq' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssistantChatResponse' '400': description: Bad Request. The turn was refused before any message content was processed. For example, an assistant with `privacy_settings.in_transit_data_locality` enabled refuses a request that entered the platform outside the organization's data-locality region, or that this deployment cannot serve in that region; the response detail names the API hostname to send it to. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/chat/sms: post: tags: - Assistants summary: Assistant Sms Chat description: "Send an SMS message for an assistant. This endpoint: \n1. Validates the assistant exists and has messaging\ \ profile configured \n2. If should_create_conversation is true, creates a new conversation with metadata \n3. Sends\ \ the SMS message (If `text` is set, this will be sent. Otherwise, if this is the first message in the conversation\ \ and the assistant has a `greeting` configured, this will be sent. Otherwise the assistant will generate the text\ \ to send.) \n4. Updates conversation metadata if provided \n5. Returns the conversation ID" operationId: assistant_sms_chat_assistants__assistant_id__chat_sms_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssistantSmsChatReq' example: from: From to: To text: Text should_create_conversation: false responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssistantSmsChatResponse' example: conversation_id: Conversation Id headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/{assistant_id}/chat/whatsapp: post: tags: - Assistants summary: Assistant WhatsApp Chat description: 'Start a WhatsApp conversation with a customer from the business side. This endpoint: 1. Validates that `from` is a WhatsApp number on your account whose messaging profile has this assistant configured 2. Creates a new `whatsapp_chat` conversation with the provided metadata 3. Asks the assistant to pick one of its approved WhatsApp templates and fill its variables from `content` 4. Sends the template from `from` to `to` 5. Returns the conversation ID and the message ID When the customer replies, the reply is routed to the same conversation and the assistant answers within the 24-hour customer service window. The assistant needs a `whatsapp_template` tool with at least one approved template, data retention enabled and PII redaction disabled.' operationId: assistant_whatsapp_chat_assistants__assistant_id__chat_whatsapp_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. Must be the assistant configured on the messaging profile of the `from` number. required: true schema: type: string title: Assistant Id - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssistantWhatsappChatReq' example: from: '+13125550001' to: '+13125550002' content: Send the login verification code 482913 to the customer. conversation_metadata: order_id: A1 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AssistantWhatsappChatResponse' example: conversation_id: 59f1f39e-180c-4f5d-81e9-393b46ca4077 message_id: 4031a0e8-f724-4e22-a086-0f18720ac829 headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request. Missing required fields or a reserved `conversation_metadata` key, or the assistant is not the one configured on the messaging profile of `from` (10015). Invalid JSON (10023). A field of the wrong type, for example a non-string `from`, `to` or `content`, or a `conversation_metadata` value that is not a string, integer or boolean (10026). `from` is not a valid WhatsApp number on a messaging profile (40305). `to` is not a valid E.164 number or BSUID (40310). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '401': description: Authentication Failed (10009). The API key is missing or invalid. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '403': description: Forbidden. The `from` number is not associated with your account (10010), messaging is disabled on the account (40314), or the account is inactive (20012), blocked (20013) or unverified (20014). content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '404': description: Not Found (10005). The assistant does not exist. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': description: Conflict. The messaging profile of `from` is disabled (40312), or a request with the same Idempotency-Key is still being processed (10036), in which case retry later with the same key and request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_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 '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Unprocessable Entity (10027). The assistant did not return a WhatsApp template, or its privacy settings do not allow storing conversations. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service Unavailable (10037). The assistant could not be looked up, the conversation could not be started, or the template could not be sent. Retry the request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/{assistant_id}/clone: post: tags: - Assistants summary: Clone Assistant description: Clone an existing assistant, excluding telephony and messaging settings. operationId: clone_assistant_public_assistants__assistant_id__clone_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - $ref: '#/components/parameters/IdempotencyKey' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/{assistant_id}/deleted: get: tags: - Assistants summary: Get a deleted assistant description: Retrieve a soft-deleted assistant from the Recently Deleted list by `assistant_id`, including its `deleted_at` and `permanently_deleted_at` timestamps. This is a read-only view; the assistant cannot be modified while it remains deleted. operationId: get_deleted_assistant_public_assistants__assistant_id__deleted_get parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DeletedAssistant' example: id: assistant_7f3c2a1b name: Support Assistant created_at: '2025-08-14T09:24:11.000000Z' model: telnyx-gpt instructions: You are a support assistant. deleted_at: '2026-10-02T00:46:15.245000Z' permanently_deleted_at: '2026-11-01T00:46:15.245000Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/instructions/enhance: post: tags: - Assistants summary: Enhance Assistant Instructions description: 'Enhance an assistant''s instructions using an LLM. The endpoint reads the assistant''s current instructions and tools, then streams back improved instructions as they are generated. Optionally provide an `enhancement_prompt` to steer the changes (for example, "make the instructions more concise" or "add error handling guidance"). When omitted, the assistant''s existing instructions are used as the basis for the enhancement. The enhancement focuses on tool-calling reliability, clarity and precision, completeness and error handling, tool schema alignment, and conversation flow structure. The response is streamed as `text/plain` using chunked transfer encoding; consume the body incrementally to render the enhanced instructions as they arrive.' operationId: enhance_assistant_instructions_public_assistants__assistant_id__instructions_enhance_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/EnhanceInstructionsRequest' example: enhancement_prompt: string instructions: string responses: '200': description: A stream of enhanced instruction text. The body is sent as `text/plain` using chunked transfer encoding. content: text/plain: schema: type: string title: Enhanced Instructions Stream example: Enhanced Instructions Stream '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/restore: post: tags: - Assistants summary: Restore an assistant description: 'Restore a soft-deleted assistant from the Recently Deleted list. The assistant becomes fully active again with its versions and TeXML application as they were at deletion time. Restoring does not re-enable numbers or connections that were released separately after the deletion.' operationId: restore_assistant_public_assistants__assistant_id__restore_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' example: id: assistant_7f3c2a1b name: Support Assistant created_at: '2025-08-14T09:24:11.000000Z' model: telnyx-gpt instructions: You are a support assistant. '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/scheduled_events: get: tags: - Assistants summary: List scheduled events description: Get scheduled events for an assistant with pagination and filtering operationId: get_scheduled_events parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: from_date in: query description: Start of the date range filter (inclusive, ISO 8601). required: false schema: type: string format: date-time title: From Date - name: to_date in: query description: End of the date range filter (inclusive, ISO 8601). required: false schema: type: string format: date-time title: To Date - name: conversation_channel in: query description: Filter results by conversation channel. required: false schema: $ref: '#/components/schemas/ConversationChannelType' title: Conversation Channel - 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 maximum: 100 minimum: 1 default: 20 title: Page[Size] number: type: integer minimum: 1 default: 1 title: Page[Number] responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PaginatedScheduledEventList' example: meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 data: - telnyx_conversation_channel: phone_call telnyx_end_user_target: Telnyx End User Target telnyx_agent_target: Telnyx Agent Target scheduled_at_fixed_datetime: '2024-01-23T18:10:02.574Z' assistant_id: Assistant Id retry_count: 0 retry_attempts: 0 scheduled_event_id: Scheduled Event Id conversation_id: Conversation Id created_at: '2024-01-23T18:10:02.574Z' status: pending errors: - string call_status: Call Status call_duration: 0 max_retries_client_errors: 0 retry_interval_secs: 0 call_attempts: - attempt_number: 0 attempted_at: '2024-01-23T18:10:02.574Z' call_status: Call Status call_duration: 0 telnyx_call_control_id: Telnyx Call Control Id dispatched_at: '2024-01-23T18:10:02.574Z' call_settings: sip_region: US '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Create a scheduled event description: Create a scheduled event for an assistant operationId: create_scheduled_event parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateScheduledEventRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ScheduledEventResponse' example: telnyx_conversation_channel: phone_call telnyx_end_user_target: Telnyx End User Target telnyx_agent_target: Telnyx Agent Target scheduled_at_fixed_datetime: '2024-01-23T18:10:02.574Z' assistant_id: Assistant Id retry_count: 0 retry_attempts: 0 scheduled_event_id: Scheduled Event Id conversation_id: Conversation Id created_at: '2024-01-23T18:10:02.574Z' status: pending errors: - string call_status: Call Status call_duration: 0 max_retries_client_errors: 0 retry_interval_secs: 0 call_attempts: - attempt_number: 0 attempted_at: '2024-01-23T18:10:02.574Z' call_status: Call Status call_duration: 0 telnyx_call_control_id: Telnyx Call Control Id dispatched_at: '2024-01-23T18:10:02.574Z' call_settings: sip_region: US headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/assistants/{assistant_id}/scheduled_events/{event_id}: delete: tags: - Assistants summary: Delete a scheduled event description: If the event is pending, this will cancel the event. Otherwise, this will simply remove the record of the event. operationId: delete_scheduled_event parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: event_id in: path description: Unique identifier of the event. required: true schema: type: string title: Event Id responses: '200': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Assistants summary: Get a scheduled event description: Returns the details of a single scheduled event configured for the specified assistant. operationId: get_scheduled_event parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: event_id in: path description: Unique identifier of the event. required: true schema: type: string title: Event Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ScheduledEventResponse' example: telnyx_conversation_channel: phone_call telnyx_end_user_target: Telnyx End User Target telnyx_agent_target: Telnyx Agent Target scheduled_at_fixed_datetime: '2024-01-23T18:10:02.574Z' assistant_id: Assistant Id retry_count: 0 retry_attempts: 0 scheduled_event_id: Scheduled Event Id conversation_id: Conversation Id created_at: '2024-01-23T18:10:02.574Z' status: pending errors: - string call_status: Call Status call_duration: 0 max_retries_client_errors: 0 retry_interval_secs: 0 call_attempts: - attempt_number: 0 attempted_at: '2024-01-23T18:10:02.574Z' call_status: Call Status call_duration: 0 telnyx_call_control_id: Telnyx Call Control Id dispatched_at: '2024-01-23T18:10:02.574Z' call_settings: sip_region: US '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/tags: post: tags: - Assistants summary: Add Assistant Tag operationId: add_assistant_tag parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddTagRequest' example: tag: Tag responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TagsResponse' example: tags: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Add a tag to an AI assistant. Tags help you organize and filter your assistants. /ai/assistants/{assistant_id}/tags/{tag}: delete: tags: - Assistants summary: Remove Assistant Tag operationId: remove_assistant_tag parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: tag in: path description: Unique identifier of the tag. required: true schema: type: string title: Tag responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TagsResponse' example: tags: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Removes the specified tag from the AI assistant and returns the assistant's updated tag list. /ai/assistants/{assistant_id}/texml: get: tags: - Assistants summary: Get assistant texml description: Get an assistant texml by `assistant_id`. operationId: get_assistant_texml_public_assistants__assistant_id__texml_get parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id responses: '200': description: Successful Response content: application/json: schema: type: string example: string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/tools/{tool_id}: delete: tags: - Assistants summary: Remove Assistant Tool operationId: remove_assistant_tool parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Detaches the specified tool from the AI assistant so the assistant can no longer invoke it. put: tags: - Assistants summary: Add Assistant Tool operationId: add_assistant_tool parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Attach an existing tool to an AI assistant. /ai/assistants/{assistant_id}/tools/{tool_id}/test: post: tags: - Assistants summary: Test Assistant Tool description: Executes a test invocation of the specified webhook tool for the assistant and returns the outcome, so you can verify the webhook's behavior before relying on it in conversations. operationId: test_assistant_tool_public_assistants__assistant_id__tools__tool_id__test_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id requestBody: content: application/json: schema: $ref: '#/components/schemas/TestWebhookToolRequest' example: arguments: order_id: order_12345 dynamic_variables: customer_name: Ada responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TestWebhookToolResponseData' example: data: success: true status_code: 200 content_type: application/json response: '{"received":true}' request: url: https://example.com/webhook method: POST '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/versions: get: tags: - Assistants summary: Get all versions of an assistant description: Retrieves all versions of a specific assistant with complete configuration and metadata. An assistant keeps at most 10 versions, including the main version. When an update takes it past that limit, the oldest versions are permanently deleted. The main version and any version referenced by a traffic distribution rule are never deleted this way. operationId: get_assistant_versions_public_assistants__assistant_id__versions_get parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id responses: '200': description: Returns list of assistant versions ordered by creation date (newest first) content: application/json: schema: $ref: '#/components/schemas/AssistantsListData' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/versions/{version_id}: delete: tags: - Assistants summary: Delete a specific assistant version description: Permanently removes a specific version of an assistant. Can not delete main version operationId: delete_assistant_version_public_assistants__assistant_id__versions__version_id__delete parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: version_id in: path description: Unique identifier of the version. required: true schema: type: string title: Version Id responses: '204': description: Returns HTTP 204 No Content on successful deletion '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Assistants summary: Get a specific assistant version description: Retrieves a specific version of an assistant by assistant_id and version_id operationId: get_assistant_version_public_assistants__assistant_id__versions__version_id__get parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: version_id in: path description: Unique identifier of the version. required: true schema: type: string title: Version Id - name: include_mcp_servers in: query description: Whether to include MCP servers in the response. required: false schema: type: boolean responses: '200': description: Returns the specific assistant version configuration content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Assistants summary: Update a specific assistant version description: Updates the configuration of a specific assistant version. Can not update main version operationId: update_assistant_version_public_assistants__assistant_id__versions__version_id__post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: version_id in: path description: Unique identifier of the version. required: true schema: type: string title: Version Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssistantRequest' responses: '200': description: Returns the updated assistant version configuration content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' '400': description: Bad Request. The resulting assistant configuration was rejected. For example, enabling `privacy_settings.in_transit_data_locality` is refused when the organization's data-locality region has no in-region inference, or when any model the assistant could use — its `model`, its `fallback_config`, or a conversation-flow node override — is not Telnyx-hosted. The response detail names the model and where it is configured. Validation runs against the merged result of the update, not only the fields sent. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/assistants/{assistant_id}/versions/{version_id}/promote: post: tags: - Assistants summary: Promote an assistant version to main description: Promotes a specific version to be the main/current version of the assistant. This will delete any existing canary deploy configuration and send all live production traffic to this version. operationId: promote_assistant_version_public_assistants__assistant_id__versions__version_id__promote_post parameters: - name: assistant_id in: path description: Unique identifier of the assistant. required: true schema: type: string title: Assistant Id - name: version_id in: path description: Unique identifier of the version. required: true schema: type: string title: Version Id responses: '200': description: Returns the promoted assistant configuration content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/audio/transcriptions: post: tags: - Audio summary: Transcribe speech to text description: Transcribe speech to text. This endpoint is consistent with the [OpenAI Transcription API](https://platform.openai.com/docs/api-reference/audio/createTranscription) and may be used with the OpenAI JS or Python SDK. operationId: audio_public_audio_transcriptions_post requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/AudioTranscriptionRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AudioTranscriptionResponse' example: text: string duration: 0 segments: - id: 0 start: 0 end: 0 text: string words: - word: string start: 0 end: 0 confidence: 0 speaker: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/avatars: get: tags: - Avatars summary: List avatars description: Returns a paginated list of the Telnyx stock avatars and custom avatars available to the authenticated organization. Custom avatars owned by other organizations are never returned. The `image_url` value is suitable for displaying a thumbnail and may be refreshed by listing or retrieving the avatar again. `suggested_voice_id` recommends a compatible Telnyx voice for stock avatars and is an empty string for custom avatars; it does not change an AI Assistant's voice automatically. operationId: list_avatars_public_avatars_get parameters: - name: page[size] in: query description: Number of avatars to return per page. required: false schema: type: integer minimum: 1 maximum: 100 default: 20 - name: page[number] in: query description: Page number to retrieve, starting at 1. required: false schema: type: integer minimum: 1 default: 1 - name: filter[name] in: query description: Return avatars whose names contain this value, using case-insensitive matching. required: false schema: type: string minLength: 1 maxLength: 255 - name: filter[id] in: query description: Return the avatar with this exact ID. required: false schema: $ref: '#/components/schemas/AvatarId' - name: filter[avatar_type] in: query description: Return only stock or custom avatars. required: false schema: $ref: '#/components/schemas/AvatarType' responses: '200': description: A page of available avatars. content: application/json: schema: $ref: '#/components/schemas/AvatarListResponse' example: data: - id: elena name: Elena provider: telnyx avatar_type: stock hosted: true image_url: https://example.com/avatars/elena.png suggested_voice_id: Telnyx.Ultra.db6b0ed5-d5d3-463d-ae85-518a07d3c2b4 - id: avatar_0123456789abcdef0123456789abcdef name: Customer portrait provider: telnyx avatar_type: custom hosted: true image_url: https://example.com/avatar.png image_url_expires_at: '2026-10-13T15:00:00Z' suggested_voice_id: '' content_type: image/png size_bytes: 248512 width_px: 1920 height_px: 1080 created_at: '2026-10-13T14:00:00Z' updated_at: '2026-10-13T14:00:00Z' meta: total_pages: 1 total_results: 2 page_number: 1 page_size: 20 '400': $ref: '#/components/responses/AvatarRequestValidationErrorResponse' '503': $ref: '#/components/responses/AvatarServiceUnavailableResponse' post: tags: - Avatars summary: Create a custom avatar description: Uploads an image, validates its file type, size, safe decoding, and resolution, stores it in Telnyx-managed private storage, and creates an avatar owned by the authenticated organization. Creating an avatar does not update an AI Assistant; use the returned ID separately wherever the avatar is consumed. The avatar image is stored independently from the rendering model and background, which are selected where the avatar is consumed. Supported image types are JPEG, PNG, and WebP. Images may be up to 10 MiB, must be between 256 and 8192 pixels on each side, and may contain at most 40 megapixels. Each organization may have up to 20 custom avatars. For best results, use a 16:9 landscape image, preferably 1920 by 1080 pixels and at least 1280 by 720 pixels. Show one centered, front-facing person from the shoulders up, keep the full head and hair visible with space around it, and use a sharp, evenly lit image with unobstructed eyes and mouth. Use a transparent PNG or WebP when the avatar will be combined with a selectable background. These composition recommendations are not enforced in the first release; the first release does not validate the number of faces, pose, or image content. operationId: create_avatar_public_avatars_post requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/CreateAvatarRequest' example: image_file: string($binary) name: Customer portrait responses: '201': description: The custom avatar was validated, stored, and created. content: application/json: schema: $ref: '#/components/schemas/AvatarResponse' example: data: id: avatar_0123456789abcdef0123456789abcdef name: Customer portrait provider: telnyx avatar_type: custom hosted: true image_url: https://example.com/avatar.png image_url_expires_at: '2026-10-13T15:00:00Z' suggested_voice_id: '' content_type: image/png size_bytes: 248512 width_px: 1920 height_px: 1080 created_at: '2026-10-13T14:00:00Z' updated_at: '2026-10-13T14:00:00Z' '400': $ref: '#/components/responses/AvatarRequestValidationErrorResponse' '422': $ref: '#/components/responses/AvatarValidationErrorResponse' '503': $ref: '#/components/responses/AvatarServiceUnavailableResponse' /ai/avatars/{avatar_id}: get: tags: - Avatars summary: Get an avatar description: Returns a Telnyx stock avatar or a custom avatar owned by the authenticated organization. A custom avatar belonging to another organization is returned as not found. operationId: get_avatar_public_avatars__avatar_id__get parameters: - $ref: '#/components/parameters/AvatarId' responses: '200': description: The avatar. content: application/json: schema: $ref: '#/components/schemas/AvatarResponse' example: data: id: avatar_0123456789abcdef0123456789abcdef name: Customer portrait provider: telnyx avatar_type: custom hosted: true image_url: https://example.com/avatar.png image_url_expires_at: '2026-10-13T15:00:00Z' suggested_voice_id: '' content_type: image/png size_bytes: 248512 width_px: 1920 height_px: 1080 created_at: '2026-10-13T14:00:00Z' updated_at: '2026-10-13T14:00:00Z' '400': $ref: '#/components/responses/AvatarRequestValidationErrorResponse' '404': $ref: '#/components/responses/AvatarNotFoundResponse' '503': $ref: '#/components/responses/AvatarServiceUnavailableResponse' patch: tags: - Avatars summary: Update a custom avatar description: Updates the customer-facing name of a custom avatar owned by the authenticated organization. Stock avatars cannot be modified. To replace the image, create a new custom avatar so existing references keep their original content. operationId: update_avatar_public_avatars__avatar_id__patch parameters: - $ref: '#/components/parameters/AvatarId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAvatarRequest' example: name: Updated portrait responses: '200': description: The custom avatar was updated. content: application/json: schema: $ref: '#/components/schemas/AvatarResponse' '400': $ref: '#/components/responses/AvatarMutationBadRequestResponse' '404': $ref: '#/components/responses/AvatarNotFoundResponse' '422': $ref: '#/components/responses/AvatarValidationErrorResponse' '503': $ref: '#/components/responses/AvatarServiceUnavailableResponse' /ai/chat/completions: post: tags: - Chat summary: Create a chat completion description: '**Deprecated**: Use `POST /v2/ai/openai/chat/completions` instead. Chat with a language model. This endpoint is consistent with the [OpenAI Chat Completions API](https://platform.openai.com/docs/api-reference/chat) and may be used with the OpenAI JS or Python SDK.' operationId: chat_public_chat_completions_post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChatCompletionRequest' example: messages: - role: system content: You are a friendly chatbot. - role: user content: Hello, world! responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' deprecated: true x-hidden: true /ai/clusters: get: tags: - Clusters summary: List all clusters operationId: list_all_requested_clusters_public_text_clusters_get 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 default: 0 title: Page[Number] size: type: integer default: 20 title: Page[Size] responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ClusteringRequestInfoData' example: data: - task_id: string status: completed bucket: string created_at: '2024-01-23T18:10:02.574Z' finished_at: '2024-01-23T18:12:45.000Z' min_cluster_size: 0 min_subcluster_size: 0 meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Retrieve a paginated list of clustering tasks and their statuses. post: tags: - Clusters summary: Compute new clusters description: Starts a background task to compute how the data in an [embedded storage bucket](https://developers.telnyx.com/api-reference/embeddings/embed-documents) is clustered. This helps identify common themes and patterns in the data. operationId: compute_new_cluster_public_text_clusters_post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PublicTextClusteringRequest' example: bucket: string prefix: string files: - string min_cluster_size: 25 min_subcluster_size: 5 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TextClusteringResponseData' example: data: task_id: string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/clusters/{task_id}: delete: tags: - Clusters summary: Delete a cluster operationId: delete_cluster_by_task_id_public_text_clusters__task_id__delete parameters: - name: task_id in: path description: Unique identifier of the task. required: true schema: type: string title: Task Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type description: Delete a clustering task and its computed results. get: tags: - Clusters summary: Fetch a cluster operationId: fetch_cluster_by_task_id_public_text_clusters__task_id__get parameters: - name: task_id in: path description: Unique identifier of the task. required: true schema: type: string title: Task Id - name: top_n_nodes in: query description: The number of nodes in the cluster to return in the response. Nodes will be sorted by their centrality within the cluster. required: false schema: type: integer default: 0 title: Top N Nodes - name: show_subclusters in: query description: Whether or not to include subclusters and their nodes in the response. required: false schema: type: boolean default: false title: Show Subclusters responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ClusteringStatusResponseData' example: data: status: pending bucket: string clusters: - cluster_id: string cluster_header: string cluster_summary: string nodes: - filename: string text: string total_number_of_nodes: 0 subclusters: - cluster_id: string cluster_header: string cluster_summary: string nodes: - filename: string text: string total_number_of_nodes: 0 subclusters: - cluster_id: string cluster_header: string cluster_summary: string nodes: - filename: string text: string total_number_of_nodes: 0 subclusters: - cluster_id: string cluster_header: string cluster_summary: string nodes: - filename: string text: string total_number_of_nodes: 0 subclusters: - cluster_id: string cluster_header: string cluster_summary: string nodes: [] total_number_of_nodes: 0 subclusters: [] '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Fetch the results of a clustering task, including the discovered clusters. /ai/clusters/{task_id}/graph: get: tags: - Clusters summary: Fetch a cluster visualization operationId: fetch_cluster_image_by_task_id_public_text_clusters__task_id__image_get parameters: - name: task_id in: path description: Unique identifier of the task. required: true schema: type: string title: Task Id - name: cluster_id in: query description: Filter results by cluster id. required: false schema: type: integer title: Cluster Id responses: '200': description: Successful Response - Returns a PNG image of the cluster visualization. content: image/png: schema: type: string format: binary '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Fetch a visualization image of the clusters computed by a clustering task. /ai/collections: get: summary: List collections description: Returns a paginated list of collections in your organization. operationId: ListCollections tags: - AI Collections parameters: - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/collections_PageSize' responses: '200': description: A paginated list of collections. content: application/json: schema: $ref: '#/components/schemas/CollectionListEnvelope' '401': $ref: '#/components/responses/Unauthorized' post: summary: Create a collection description: Creates a new collection scoped to your organization. Optionally attach sources and retrieval settings at creation time. If `slug` is omitted, one is derived from `name` and must be unique within your organization. operationId: CreateCollection tags: - AI Collections requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateCollectionRequest' responses: '201': description: Collection created. content: application/json: schema: $ref: '#/components/schemas/CollectionEnvelope' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '409': $ref: '#/components/responses/Conflict' '422': description: Validation error -- a `bucket` source without a `bucket_id` (`invalid_source_configuration`), an unknown `source_type` (`invalid_source_type`), an unsupported `retrieval_type` (`unsupported_retrieval_type`), or `top_k` out of range 1-50 (`invalid_top_k`). content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: invalid_source_configuration title: Invalid source configuration detail: The bucket_id field is required when source_type is bucket. meta: pointer: /sources/0/bucket_id /ai/collections/slug/{slug}: get: summary: Get a collection by slug description: Fetches a single collection by its `slug`. operationId: GetCollectionBySlug tags: - AI Collections parameters: - $ref: '#/components/parameters/Slug' responses: '200': description: The collection. content: application/json: schema: $ref: '#/components/schemas/CollectionEnvelope' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /ai/collections/{uuid}: delete: summary: Delete a collection description: Soft-deletes a collection. Its `slug` is freed and may be reused by a new collection. operationId: DeleteCollection tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' responses: '204': description: Collection deleted. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' get: summary: Get a collection description: Fetches a single collection by its `uuid`. operationId: GetCollection tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' responses: '200': description: The collection. content: application/json: schema: $ref: '#/components/schemas/CollectionEnvelope' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: summary: Update a collection description: Updates a collection's metadata (`name` and/or `description`). Sources and settings are managed through their own sub-resources. operationId: UpdateCollection tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateCollectionRequest' responses: '200': description: The updated collection. content: application/json: schema: $ref: '#/components/schemas/CollectionEnvelope' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /ai/collections/{uuid}/settings: get: summary: Get collection settings description: Returns the retrieval settings for a collection. operationId: GetCollectionSettings tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' responses: '200': description: The collection's retrieval settings. content: application/json: schema: $ref: '#/components/schemas/SettingsEnvelope' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: summary: Update collection settings description: Partially updates the collection's retrieval settings. operationId: UpdateCollectionSettings tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SettingsRequest' responses: '200': description: The updated settings. content: application/json: schema: $ref: '#/components/schemas/SettingsEnvelope' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': description: Validation error -- unsupported `retrieval_type` (`unsupported_retrieval_type`) or `top_k` out of range 1-50 (`invalid_top_k`). content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: unsupported_retrieval_type title: Unsupported retrieval type detail: 'retrieval_type ''semantic'' is not supported. Supported types: ''hybrid'', ''vector''.' meta: pointer: /retrieval/retrieval_type put: summary: Replace collection settings description: Replaces the collection's retrieval settings. operationId: ReplaceCollectionSettings tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SettingsRequest' responses: '200': description: The updated settings. content: application/json: schema: $ref: '#/components/schemas/SettingsEnvelope' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': description: Validation error -- unsupported `retrieval_type` (`unsupported_retrieval_type`) or `top_k` out of range 1-50 (`invalid_top_k`). content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: unsupported_retrieval_type title: Unsupported retrieval type detail: 'retrieval_type ''semantic'' is not supported. Supported types: ''hybrid'', ''vector''.' meta: pointer: /retrieval/retrieval_type /ai/collections/{uuid}/sources: get: summary: List collection sources description: Returns the sources attached to a collection. operationId: ListCollectionSources tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' responses: '200': description: The collection's sources. content: application/json: schema: $ref: '#/components/schemas/SourceListEnvelope' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' post: summary: Add a collection source description: Attaches a new content source to the specified collection and returns the created source. The source's content is ingested and embedded so it becomes searchable within the collection. operationId: AddCollectionSource tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SourceRequest' responses: '201': description: The created source. content: application/json: schema: $ref: '#/components/schemas/SourceEnvelope' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/Conflict' '422': description: Invalid source configuration -- `bucket` without a `bucket_id` (`invalid_source_configuration`) or an unknown `source_type` (`invalid_source_type`). content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: invalid_source_configuration title: Invalid source configuration detail: The bucket_id field is required when source_type is bucket. meta: pointer: /bucket_id put: summary: Replace collection sources description: Replaces the collection's entire source set. The response `meta` reports which sources were added, retained, and removed. operationId: ReplaceCollectionSources tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReplaceSourcesRequest' responses: '200': description: The reconciled source list. content: application/json: schema: $ref: '#/components/schemas/SourceReconcileEnvelope' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/Conflict' '422': description: Invalid source configuration -- `bucket` without a `bucket_id` (`invalid_source_configuration`) or an unknown `source_type` (`invalid_source_type`). content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: invalid_source_configuration title: Invalid source configuration detail: The bucket_id field is required when source_type is bucket. meta: pointer: /bucket_id /ai/collections/{uuid}/sources/{sourceId}: delete: summary: Remove a collection source description: Removes a single source from a collection. operationId: RemoveCollectionSource tags: - AI Collections parameters: - $ref: '#/components/parameters/Uuid' - $ref: '#/components/parameters/SourceId' responses: '204': description: Source removed. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /ai/conversation_histories: get: summary: Search conversation histories description: 'Performs semantic vector search across conversation history records. **How it works:** 1. The query text is embedded into a 1024-dimensional vector using the multilingual-e5-large model. 2. The vector is compared against indexed record chunks using semantic similarity search. 3. When no region is specified, all regions are queried in parallel (fan-out) and results are merged by score. 4. Results are ranked by similarity score (descending) and paginated via `page[number]` / `page[size]`. **Authentication:** Requires a Telnyx API key via `Authorization: Bearer `. Results are automatically scoped to the caller''s organization — `organization_id` is injected from the auth token and cannot be overridden. **Chunking:** Records are split into chunks of up to 480 tokens with 64-token overlap at ingestion time. Each search result represents a single chunk, with `chunk_index` and `chunk_total` indicating its position within the original record. **Filtering:** Use `filter[field][operator]=value` query parameters to narrow results before vector search. Top-level filterable fields: `user_id`, `region`, `record_id`, `record_created_at`, `ingested_at`, `retention` Note: `retention` is filter-only — it can be used to narrow results but is not returned in the response body. Metadata fields: any field not in the list above is resolved to `data.metadata.` (e.g., `filter[language]=en` → `data.metadata.language`). Supported filter operators: - `eq` — exact match (default when no operator specified) - `in` — match any of comma-separated values - `gte`, `gt`, `lte`, `lt` — range comparisons (useful for date filtering) - `contains` — wildcard substring match **Examples:** - `GET /v2/ai/conversation_histories?q=billing+issue&page[size]=10` - `GET /v2/ai/conversation_histories?q=setup+guide®ion=USA&min_score=0.5` - `GET /v2/ai/conversation_histories?q=refund&filter[record_created_at][gte]=2026-01-01T00:00:00Z` - `GET /v2/ai/conversation_histories?q=outage&filter[region][in]=USA,DEU` - `GET /v2/ai/conversation_histories?q=hold+time&filter[language]=en`' operationId: SearchConversationHistories tags: - Conversation Histories parameters: - name: q in: query required: true description: Natural language search query. The text is embedded into a 1024-dimensional vector and compared against indexed record chunks using semantic similarity. schema: type: string minLength: 1 example: customer called about billing issue - name: region in: query required: false description: Restrict search to a specific region. When omitted, all regions are queried in parallel (fan-out) and results are merged by similarity score. schema: type: string enum: - USA - DEU - AUS - UAE example: USA - 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 - name: page[size] in: query required: false description: Number of results per page. Defaults to 20, maximum 100. schema: type: integer minimum: 1 maximum: 100 default: 20 example: 10 - name: min_score in: query required: false description: Minimum cosine similarity score threshold (0.0 to 1.0). Results below this threshold are excluded. schema: type: number format: float minimum: 0.0 maximum: 1.0 default: 0.0 example: 0.5 - name: filter[user_id] in: query required: false description: Filter to records owned by a specific user (exact match). schema: type: string example: user-123 - name: filter[record_id] in: query required: false description: Filter to chunks belonging to a specific parent record (exact match). schema: type: string example: rec-001 - name: filter[region][in] in: query required: false description: Filter by the region stored on the record. Comma-separated to match multiple regions (USA, DEU, AUS, UAE). Distinct from the `region` parameter, which selects which cluster(s) are queried. schema: type: string example: USA,DEU - name: filter[record_created_at][gte] in: query required: false description: Only include records whose original creation time is on or after this ISO 8601 timestamp. schema: type: string format: date-time example: '2026-01-01T00:00:00Z' - name: filter[record_created_at][lte] in: query required: false description: Only include records whose original creation time is on or before this ISO 8601 timestamp. schema: type: string format: date-time example: '2026-12-31T23:59:59Z' - name: filter[ingested_at][gte] in: query required: false description: Only include records ingested (chunked, embedded, and indexed) on or after this ISO 8601 timestamp. schema: type: string format: date-time example: '2026-01-01T00:00:00Z' - name: filter[ingested_at][lte] in: query required: false description: Only include records ingested (chunked, embedded, and indexed) on or before this ISO 8601 timestamp. schema: type: string format: date-time example: '2026-12-31T23:59:59Z' - name: filter[retention] in: query required: false description: 'Filter by retention policy (exact match). Filter-only: not returned in the response body.' schema: type: string responses: '200': description: Successful search response with ranked conversation history chunks. content: application/json: schema: $ref: '#/components/schemas/ConversationHistoryResponse' example: data: - id: rec-001_chunk_0 record_id: rec-001 chunk_index: 0 chunk_total: 3 text: Customer called regarding a billing discrepancy on their latest invoice. Agent confirmed the charge was correct and explained the prorated amount. score: 0.92 region: USA user_id: user-123 organization_id: org-456 record_created_at: '2026-05-28T12:00:00Z' ingested_at: '2026-05-28T12:01:00Z' metadata: source: call-center language: en meta: total_pages: 1 total_results: 1 page_number: 1 page_size: 20 '400': description: Invalid request parameters — invalid region or malformed filter expression. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '400' title: Bad Request detail: 'Invalid region: invalid. Must be one of: USA, DEU, AUS, UAE' '401': description: 'Missing or invalid authentication. Provide a valid Telnyx API key via the Authorization: Bearer header.' content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10004' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. '422': description: Request validation failed (e.g., missing required parameter). 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. '500': description: Server-side error — embeddings service unavailable, search backend unreachable, or internal processing failure. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. meta: url: https://developers.telnyx.com/docs/overview/errors/10007 '503': description: Service not initialized — bootstrap still in progress. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10037' title: Service unavailable detail: Service is unavailable. /ai/conversations: get: tags: - Conversations summary: List conversations description: Retrieve a list of all AI conversations configured by the user. Supports [PostgREST-style query parameters](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) for filtering. Examples are included for the standard metadata fields, but you can filter on any field in the metadata JSON object. For example, to filter by a custom field `metadata->custom_field`, use `metadata->custom_field=eq.value`. operationId: get_conversations_public_conversations_get parameters: - name: id in: query description: Filter by conversation ID (e.g. id=eq.123) required: false schema: type: string - name: name in: query description: Filter by conversation Name (e.g. `name=like.Voice%`) required: false schema: type: string - name: created_at in: query description: Filter by creation datetime (e.g., `created_at=gte.2025-01-01`) required: false schema: type: string - name: last_message_at in: query description: Filter by last message datetime (e.g., `last_message_at=lte.2025-06-01`) required: false schema: type: string - name: metadata->assistant_id in: query description: Filter by assistant ID (e.g., `metadata->assistant_id=eq.assistant-123`) required: false schema: type: string - name: metadata->assistant_version_id in: query description: Filter by assistant version ID (e.g., `metadata->assistant_version_id=eq.20250812T114318034399`). The version that handled the conversation is stored in metadata when the conversation starts; conversations created before this field was tracked, or that never resolved a version, have no `assistant_version_id` and do not match this filter. required: false schema: type: string - name: metadata->call_control_id in: query description: Filter by call control ID (e.g., `metadata->call_control_id=eq.v3:123`) required: false schema: type: string - name: metadata->telnyx_agent_target in: query description: Filter by the phone number, SIP URI, or other identifier for the agent (e.g., `metadata->telnyx_agent_target=eq.+13128675309`) required: false schema: type: string - name: metadata->telnyx_end_user_target in: query description: Filter by the phone number, SIP URI, or other identifier for the end user (e.g., `metadata->telnyx_end_user_target=eq.+13128675309`) required: false schema: type: string - name: metadata->telnyx_conversation_channel in: query description: Filter by conversation channel (e.g., `metadata->telnyx_conversation_channel=eq.phone_call`) required: false schema: type: string - name: limit in: query description: Limit the number of returned conversations (e.g., `limit=10`) required: false schema: type: integer minimum: 1 - name: order in: query description: Order the results by specific fields (e.g., `order=created_at.desc` or `order=last_message_at.asc`) required: false schema: type: string - name: or in: query description: Apply OR conditions using PostgREST syntax (e.g., `or=(created_at.gte.2025-04-01,last_message_at.gte.2025-04-01)`) required: false schema: type: string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ConversationsListData' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Conversations summary: Create a conversation description: Creates a new AI conversation, the container for messages exchanged with an assistant, and returns the created conversation. operationId: create_new_conversation_public_conversations_post parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateConversationRequest' example: name: string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Conversation' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/conversations/conversation-insights/aggregates: get: tags: - Conversations summary: Aggregate Conversation Insights description: Aggregate conversation insights by specified fields operationId: aggregate_conversation_insights parameters: - name: group_by in: query required: false schema: type: array items: type: string description: 'Fields to group by (can be comma-separated or multiple parameters). Prefix a field with ''metadata.'' (e.g. ''metadata.assistant_id'') to group by the conversation''s metadata instead of the insight result. Common fields used for over-time charts: - `score` — Group by the insight''s score value (e.g. for Agent Instruction Following, User Satisfaction). - `metadata.assistant_id` — Group by the assistant that handled the conversation. - `metadata.assistant_version_id` — Group by the assistant version, useful for comparing performance across versions in the portal''s ''Insights Over Time'' chart. - `metadata.telnyx_conversation_channel` — Group by conversation channel (phone_call, web_chat, etc.).' title: Group By description: 'Fields to group by (can be comma-separated or multiple parameters). Prefix a field with ''metadata.'' (e.g. ''metadata.assistant_id'') to group by the conversation''s metadata instead of the insight result. Common fields used for over-time charts: - `score` — Group by the insight''s score value (e.g. for Agent Instruction Following, User Satisfaction). - `metadata.assistant_id` — Group by the assistant that handled the conversation. - `metadata.assistant_version_id` — Group by the assistant version, useful for comparing performance across versions in the portal''s ''Insights Over Time'' chart. - `metadata.telnyx_conversation_channel` — Group by conversation channel (phone_call, web_chat, etc.).' - name: show in: query required: false schema: type: array items: type: string description: Fields to include in the result (can be comma-separated or multiple parameters). Supports the same 'metadata.' prefix as group_by. Each returned row will contain the grouped field values plus a `record_count` indicating how many conversation insights match that combination. title: Show description: Fields to include in the result (can be comma-separated or multiple parameters). Supports the same 'metadata.' prefix as group_by. Each returned row will contain the grouped field values plus a `record_count` indicating how many conversation insights match that combination. - name: insight_id in: query required: false schema: type: string format: uuid description: Optional insight ID to filter conversation insights. Only insights matching this ID will be included in the aggregation. title: Insight Id description: Optional insight ID to filter conversation insights. Only insights matching this ID will be included in the aggregation. - name: created_at in: query required: false schema: type: string description: Filter by creation datetime to scope the aggregation window. Supports range operators (e.g., `created_at=gte.2025-01-01T00:00:00Z` for the start of the range, `created_at=lt.2025-01-02T00:00:00Z` for the end). To build per-day time series (as the portal does for the 'Insights Over Time' chart), issue one request per day bounded by `created_at=gte.` and `created_at=lt.`. title: Created At description: Filter by creation datetime to scope the aggregation window. Supports range operators (e.g., `created_at=gte.2025-01-01T00:00:00Z` for the start of the range, `created_at=lt.2025-01-02T00:00:00Z` for the end). To build per-day time series (as the portal does for the 'Insights Over Time' chart), issue one request per day bounded by `created_at=gte.` and `created_at=lt.`. - name: metadata.assistant_id in: query required: false schema: type: string description: Filter by assistant ID (e.g., `metadata.assistant_id=eq.`). When provided, only conversation insights for the specified assistant are aggregated. Used by the portal to scope the 'Insights Over Time' chart to a single assistant. title: Metadata Assistant Id description: Filter by assistant ID (e.g., `metadata.assistant_id=eq.`). When provided, only conversation insights for the specified assistant are aggregated. Used by the portal to scope the 'Insights Over Time' chart to a single assistant. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ConversationInsightAggregateResp' example: data: - record_count: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/conversations/insight-groups: get: tags: - Conversations summary: Get Insight Template Groups description: Returns a paginated list of your insight template groups. Groups organize related insight templates that are applied together when analyzing conversations. operationId: get_all_insight_groups 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 minimum: 1 description: Page number (0-based) default: 1 title: Page[Number] size: type: integer exclusiveMaximum: 100 minimum: 0 description: Number of items per page default: 20 title: Page[Size] responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GetInsightTemplateGroupsRespData' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description created_at: '2024-01-23T18:10:02.574Z' insights: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string webhook: '' meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Conversations summary: Create Insight Template Group description: Creates a new insight template group for organizing related insight templates, and returns the created group. operationId: create_insight_group parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InsightTemplateGroupCreateReq' example: name: Name description: Description webhook: '' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InsightTemplateGroupDetailRespData' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description created_at: '2024-01-23T18:10:02.574Z' insights: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string webhook: '' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/conversations/insight-groups/{group_id}: delete: tags: - Conversations summary: Delete Insight Template Group description: Permanently deletes the specified insight template group by its ID. operationId: delete_insight_group_by_id parameters: - name: group_id in: path required: true schema: type: string format: uuid description: The ID of the insight group title: Group Id description: The ID of the insight group responses: '200': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Conversations summary: Get Insight Template Group description: Returns the details of a single insight template group, including the insight templates assigned to it. operationId: get_insight_group_by_id parameters: - name: group_id in: path required: true schema: type: string format: uuid description: The ID of the insight group title: Group Id description: The ID of the insight group responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InsightTemplateGroupDetailRespData' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description created_at: '2024-01-23T18:10:02.574Z' insights: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string webhook: '' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Conversations summary: Update Insight Template Group description: Updates the specified insight template group and returns the updated group. operationId: update_insight_group_by_id parameters: - name: group_id in: path required: true schema: type: string format: uuid description: The ID of the insight group title: Group Id description: The ID of the insight group requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InsightTemplateGroupUpdateReq' example: name: Name description: Description webhook: Webhook responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InsightTemplateGroupDetailRespData' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description created_at: '2024-01-23T18:10:02.574Z' insights: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string webhook: '' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assign: post: tags: - Conversations summary: Assign Insight Template To Group description: Assigns the specified insight template to the specified insight template group. operationId: assign_insight_to_group parameters: - name: group_id in: path required: true schema: type: string format: uuid description: The ID of the insight group title: Group Id description: The ID of the insight group - name: insight_id in: path required: true schema: type: string format: uuid description: The ID of the insight title: Insight Id description: The ID of the insight responses: '200': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassign: delete: tags: - Conversations summary: Unassign Insight Template From Group description: Removes the specified insight template from the specified group. The insight template itself is not deleted. operationId: unassign_insight_from_group parameters: - name: group_id in: path required: true schema: type: string format: uuid description: The ID of the insight group title: Group Id description: The ID of the insight group - name: insight_id in: path required: true schema: type: string format: uuid description: The ID of the insight title: Insight Id description: The ID of the insight responses: '200': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type /ai/conversations/insights: get: tags: - Conversations summary: Get Insight Templates description: Returns a paginated list of your insight templates. Insight templates define analyses that run over AI conversations to extract structured findings. operationId: get_all_insights 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 minimum: 1 description: Page number (0-based) default: 1 title: Page[Number] size: type: integer exclusiveMaximum: 100 minimum: 0 description: Number of items per page default: 20 title: Page[Size] responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GetInsightTemplatesRespData' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Conversations summary: Create Insight Template description: Creates a new insight template defining an analysis to run over conversations, and returns the created template. operationId: create_insight parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InsightTemplateCreateReq' example: instructions: Instructions name: Name webhook: '' json_schema: string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InsightTemplateDetailRespData' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/conversations/insights/{insight_id}: delete: tags: - Conversations summary: Delete Insight Template description: Permanently deletes the specified insight template by its ID. operationId: delete_insight_by_id parameters: - name: insight_id in: path required: true schema: type: string format: uuid description: The ID of the insight title: Insight Id description: The ID of the insight responses: '200': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Conversations summary: Get Insight Template description: Returns the details of a single insight template by its ID, including its configuration. operationId: get_insight_by_id parameters: - name: insight_id in: path required: true schema: type: string format: uuid description: The ID of the insight title: Insight Id description: The ID of the insight responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InsightTemplateDetailRespData' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Conversations summary: Update Insight Template description: Updates the specified insight template and returns the updated template. operationId: update_insight_by_id parameters: - name: insight_id in: path required: true schema: type: string format: uuid description: The ID of the insight title: Insight Id description: The ID of the insight requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InsightTemplateUpdateReq' example: instructions: Instructions name: Name webhook: Webhook json_schema: string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InsightTemplateDetailRespData' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 instructions: Instructions created_at: '2024-01-23T18:10:02.574Z' insight_type: custom name: '' webhook: '' json_schema: string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/conversations/{conversation_id}: delete: tags: - Conversations summary: Delete a conversation description: Delete a specific conversation by its ID. operationId: delete_conversation_by_id_public_conversations_delete parameters: - name: conversation_id in: path required: true schema: type: string description: The ID of the conversation to delete responses: '200': description: Successful Response '404': description: Conversation Not Found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Conversations summary: Get a conversation description: Retrieve a specific AI conversation by its ID. operationId: get_conversation_by_id_public_conversations_get parameters: - name: conversation_id in: path required: true schema: type: string description: The ID of the conversation to retrieve responses: '200': description: Successful Response content: application/json: schema: properties: data: $ref: '#/components/schemas/Conversation' '404': description: Conversation Not Found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Conversations summary: Update conversation metadata description: Update metadata for a specific conversation. operationId: update_conversation_by_id_public_conversations_put parameters: - name: conversation_id in: path required: true schema: type: string description: The ID of the conversation to update requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateConversationRequest' example: metadata: ai_disabled: 'true' responses: '200': description: Successful Update content: application/json: schema: properties: data: $ref: '#/components/schemas/Conversation' '404': description: Conversation Not Found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/conversations/{conversation_id}/conversations-insights: get: tags: - Conversations summary: Get insights for a conversation description: Retrieve insights for a specific conversation operationId: get_conversations_public__conversation_id__insights_get parameters: - name: conversation_id in: path description: Unique identifier of the conversation. required: true schema: type: string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ConversationInsightListData' example: data: - id: string status: pending created_at: '2024-01-23T18:10:02.574Z' conversation_insights: - result: string insight_id: string meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/conversations/{conversation_id}/message: post: tags: - Conversations summary: Create Message description: Add a new message to the conversation. Used to insert a new messages to a conversation manually ( without using chat endpoint ) operationId: add_new_message parameters: - name: conversation_id in: path required: true schema: type: string format: uuid description: The ID of the conversation title: Conversation Id description: The ID of the conversation - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMsgReq' example: role: Role content: '' name: Name tool_choice: string tool_calls: [] tool_call_id: Tool Call Id sent_at: '2024-01-23T18:10:02.574Z' responses: '200': description: Successful Response headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' example: detail: - loc: - string msg: Message type: Error Type '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/conversations/{conversation_id}/messages: get: tags: - Conversations summary: Get conversation messages description: Retrieve messages for a specific conversation, including tool calls made by the assistant. operationId: get_conversations_public__conversation_id__messages_get parameters: - name: conversation_id in: path description: Unique identifier of the conversation. required: true schema: type: string - name: page[size] in: query description: The number of messages to return per page. required: false schema: type: integer maximum: 100 minimum: 1 default: 20 - name: page[number] in: query description: The page number to retrieve. required: false schema: type: integer minimum: 1 default: 1 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ConversationMessageListData' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/embeddings: get: tags: - Embeddings summary: Get Tasks by Status description: Retrieve tasks for the user that are either `queued`, `processing`, `failed`, `success` or `partial_success` based on the query string. Defaults to `queued` and `processing`. operationId: GetTasksByStatus parameters: - description: List of task statuses i.e. `status=queued&status=processing` required: false schema: items: type: string type: array title: Status description: List of task statuses i.e. `status=queued&status=processing` default: - processing - queued name: status in: query responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BackgroundTasksQueryResponseData' example: data: - user_id: User Id task_id: Task Id task_name: Task Name status: queued created_at: '2024-01-23T18:10:02.574Z' bucket: Bucket '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Embeddings summary: Embed documents description: "Perform embedding on a Telnyx Storage Bucket using the a embedding model.\nThe current supported file\ \ types are:\n- PDF\n- HTML\n- txt/unstructured text files\n- json\n- csv\n- audio / video (mp3, mp4, mpeg, mpga,\ \ m4a, wav, or webm ) - Max of 100mb file size.\n\nAny files not matching the above types will be attempted to be\ \ embedded as unstructured text.\n\nThis process can be slow, so it runs in the background and the user can check\n\ the status of the task using the endpoint `/ai/embeddings/{task_id}`.\n\n **Important Note**: When you update documents\ \ in a Telnyx Storage bucket, their associated embeddings are automatically kept up to date. If you add or update\ \ a file, it is automatically embedded. If you delete a file, the embeddings are deleted for that particular file.\n\ \nYou can also specify a custom `loader` param. Currently the only supported loader value is\n`intercom` which loads\ \ Intercom article jsons as specified by [the Intercom article API](https://developers.intercom.com/docs/references/rest-api/api.intercom.io/Articles/article/)\n\ This loader will split each article into paragraphs and save additional parameters relevant to Intercom docs, such\ \ as\n`article_url` and `heading`. These values will be returned by the `/v2/ai/embeddings/similarity-search` endpoint\ \ in the `loader_metadata` field." operationId: PostEmbedding parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/EmbeddingBucketRequest' example: bucket_name: Bucket Name document_chunk_size: 1024 document_chunk_overlap_size: 512 embedding_model: intfloat/multilingual-e5-large loader: default required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EmbeddingResponse' example: data: task_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 task_name: Task Name status: Status created_at: Created At user_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/embeddings/buckets: get: tags: - Embeddings summary: List embedded buckets description: Returns the list of storage buckets that have been embedded for your account, for use with similarity search. operationId: GetEmbeddingBuckets responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UserEmbeddedBucketsData' example: data: buckets: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/embeddings/buckets/{bucket_name}: delete: tags: - Embeddings summary: Disable AI for an Embedded Bucket description: Deletes an entire bucket's embeddings and disables the bucket for AI-use, returning it to normal storage pricing. operationId: embedding_bucket_files_public_embedding_buckets__bucket_name__delete parameters: - required: true schema: type: string title: Bucket Name name: bucket_name in: path description: Name of the bucket. responses: '200': description: Bucket Embeddings Deleted Successfully '404': description: Bucket Not Found content: application/json: schema: $ref: '#/components/schemas/BucketNotFoundError' example: detail: - code: Telnyx error code detail: Error details title: Error title '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Embeddings summary: Get file-level embedding statuses for a bucket description: Get all embedded files for a given user bucket, including their processing status. operationId: GetBucketName parameters: - required: true schema: type: string title: Bucket Name name: bucket_name in: path description: Name of the bucket. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EmbeddingsBucketFilesData' example: data: - filename: Filename status: Status created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' last_embedded_at: '2024-01-23T18:10:02.574Z' error_reason: Error Reason '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/embeddings/similarity-search: post: tags: - Embeddings summary: Search for documents description: "Perform a similarity search on a Telnyx Storage Bucket, returning the most similar `num_docs` document\ \ chunks to the query.\n\nCurrently the only available distance metric is cosine similarity which will return a `distance`\ \ between 0 and 1.\nThe lower the distance, the more similar the returned document chunks are to the query.\nA `certainty`\ \ will also be returned, which is a value between 0 and 1 where the higher the certainty, the more similar the document.\n\ You can read more about Weaviate distance metrics here: [Weaviate Docs](https://weaviate.io/developers/weaviate/config-refs/distances)\n\ \nIf a bucket was embedded using a custom loader, such as `intercom`, the additional metadata will be returned in\ \ the \n`loader_metadata` field." operationId: PostEmbeddingSimilaritySearch requestBody: content: application/json: schema: $ref: '#/components/schemas/EmbeddingSimilaritySearchRequest' example: bucket_name: Bucket Name query: Query num_of_docs: 3 required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EmbeddingSimilaritySearchResponse' example: data: - document_chunk: Document Chunk distance: 0 metadata: source: Source checksum: Checksum embedding: Embedding filename: Filename certainty: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/embeddings/url: post: tags: - Embeddings summary: Embed URL content description: Embed website content from a specified URL, including child pages up to 5 levels deep within the same domain. The process crawls and loads content from the main URL and its linked pages into a Telnyx Cloud Storage bucket. As soon as each webpage is added to the bucket, its content is immediately processed for embeddings, that can be used for [similarity search](https://developers.telnyx.com/api-reference/embeddings/search-for-documents) and [clustering](https://developers.telnyx.com/docs/inference/clusters). operationId: PostEmbeddingUrl parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/EmbeddingUrlRequest' example: url: URL bucket_name: Bucket Name required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EmbeddingResponse' example: data: task_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 task_name: Task Name status: Status created_at: Created At user_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/embeddings/{task_id}: get: tags: - Embeddings summary: Get an embedding task's status description: 'Check the status of a current embedding task. Will be one of the following: - `queued` - Task is waiting to be picked up by a worker - `processing` - The embedding task is running - `success` - Task completed successfully and the bucket is embedded - `failure` - Task failed and no files were embedded successfully - `partial_success` - Some files were embedded successfully, but at least one failed' operationId: GetEmbeddingTask parameters: - required: true schema: type: string title: Task Id name: task_id in: path description: Unique identifier of the task. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TaskStatusResponse' example: data: task_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 task_name: Task Name status: queued created_at: Created At '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/fine_tuning/jobs: get: tags: - Fine Tuning summary: List fine tuning jobs description: Retrieve a list of all fine tuning jobs created by the user. operationId: get_finetuningjob_public_finetuning_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/FineTuningJobsListData' example: data: - id: string created_at: 0 hyperparameters: n_epochs: 3 model: string organization_id: string status: queued training_file: string finished_at: null trained_tokens: null '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Fine Tuning summary: Create a fine tuning job description: Creates a new fine-tuning job that trains a model on the provided dataset, and returns the created job. operationId: create_new_finetuningjob_public_finetuning_post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateFineTuningJobRequest' example: model: string training_file: string suffix: string hyperparameters: n_epochs: 3 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/FineTuningJob' example: id: string created_at: 0 hyperparameters: n_epochs: 3 model: string organization_id: string status: queued training_file: string finished_at: null trained_tokens: null '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/fine_tuning/jobs/{job_id}: get: tags: - Fine Tuning summary: Get a fine tuning job description: Returns the details of a single fine-tuning job by its job_id, including its current status. operationId: get_finetuningjob_public_finetuning__job_id__get parameters: - name: job_id in: path description: Unique identifier of the job. required: true schema: type: string title: Job Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/FineTuningJob' example: id: string created_at: 0 hyperparameters: n_epochs: 3 model: string organization_id: string status: queued training_file: string finished_at: null trained_tokens: null '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/fine_tuning/jobs/{job_id}/cancel: post: tags: - Fine Tuning summary: Cancel a fine tuning job description: Cancels the specified in-progress fine-tuning job and returns the updated job. operationId: cancel_new_finetuningjob_public_finetuning_post parameters: - name: job_id in: path description: Unique identifier of the job. required: true schema: type: string title: Job Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/FineTuningJob' example: id: string created_at: 0 hyperparameters: n_epochs: 3 model: string organization_id: string status: cancelled training_file: string finished_at: 1706033402 trained_tokens: null '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/integrations: get: tags: - Integrations summary: List Integrations description: Returns the list of third-party integrations available to connect to your AI assistants and workflows. operationId: list_integrations_public_integrations_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/IntegrationsListResponse' example: data: - id: Id name: Name display_name: Display Name description: Description logo_url: Logo Url status: disconnected available_tools: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/integrations/connections: get: tags: - Integrations summary: List User Integrations description: Returns the list of integration connections you have set up, linking your account to third-party services. operationId: list_user_integrations_public_integrations_connections_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/IntegrationConnectionsListResponse' example: data: - id: Id integration_id: Integration Id allowed_tools: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/integrations/connections/{user_connection_id}: delete: tags: - Integrations summary: Delete Integration Connection description: Delete a specific integration connection. operationId: delete_integration_connection parameters: - name: user_connection_id in: path required: true schema: type: string description: The user integration connection identifier responses: '204': description: No Content - Integration connection deleted successfully '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Integrations summary: Get User Integration connection By Id description: Returns the details of a single integration connection by its ID. operationId: get_user_integration_by_id_public_integrations_connections__user_connection_id__get parameters: - name: user_connection_id in: path required: true schema: type: string description: The connection id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/IntegrationConnectionResponse' example: data: id: Id integration_id: Integration Id allowed_tools: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/integrations/{integration_id}: get: tags: - Integrations summary: List Integration By Id description: Returns the details of a single available integration, including its configuration details. operationId: list_integration_by_id_public_integrations__integration_id__get parameters: - name: integration_id in: path required: true schema: type: string description: The integration id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Integration' example: id: Id name: Name display_name: Display Name description: Description logo_url: Logo Url status: disconnected available_tools: - string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/knowledge/collections/{slug}/documents: get: summary: Search collection documents description: 'Runs search over the documents in a collection, ranked by relevance to `query`. Searches currently run `vector` retrieval (semantic similarity). The collection''s `retrieval_type` setting is the forward-compatible selector: `hybrid` (vector similarity fused with keyword matching) can be set but cannot be searched yet, and `keyword` (lexical BM25 matching) is not accepted yet -- setting it returns 422 `unsupported_retrieval_type`. A per-request `retrieval_type` is accepted but ignored; `meta.retrieval_type` echoes the mode that actually ran. When `query` is omitted, returns a plain catalog listing of the collection''s documents. **How it works:** 1. The `query` text is embedded into a 1024-dimensional vector using the multilingual-e5-large model. 2. The embedding is compared against the collection''s indexed document chunks using semantic similarity. When `hybrid` and `keyword` execution ship, those scores will be fused with, or replaced by, lexical BM25 matching. 3. Results are ranked by `score` (descending) and paginated via `page[number]` / `page[size]`. **Authentication:** Requires a Telnyx API key via `Authorization: Bearer `. Results are automatically scoped to your organization and cannot be overridden. **Filtering:** Use `filter[field][operator]=value` query parameters to narrow results before search. Supported operators: `eq` (default), `in`, `gte`, `gt`, `lte`, `lt`, `contains`. Metadata fields resolve to `metadata.`. **Examples:** - `GET /v2/ai/knowledge/collections/my-collection/documents?query=billing+issue&top_k=10` - `GET /v2/ai/knowledge/collections/my-collection/documents?query=refund&sources=voice,message` - `GET /v2/ai/knowledge/collections/my-collection/documents?query=outage&filter[record_created_at][gte]=2026-01-01T00:00:00Z`' operationId: SearchCollectionDocuments tags: - AI Collections parameters: - $ref: '#/components/parameters/Slug' - name: query in: query required: false description: Natural-language search query. When provided, the text is matched against the collection's document chunks using the collection's `retrieval_type` (vector or hybrid). When omitted, documents are returned as a plain catalog listing. schema: type: string minLength: 1 example: customer called about billing issue - name: top_k in: query required: false description: Maximum number of ranked results to consider. When omitted, the collection's configured `top_k` setting is used. schema: type: integer minimum: 1 maximum: 50 example: 10 - name: sources in: query required: false description: Comma-separated list of source types to restrict the search to. When omitted, all of the collection's sources are searched. schema: type: string example: voice,message - name: retrieval_type in: query required: false description: Reserved; not yet functional. A value supplied here is accepted but ignored — it does not override the collection's configured strategy, and it is not echoed back. Searches run `vector` retrieval, and `meta.retrieval_type` reports the mode that actually ran. To change retrieval strategy, set it on the collection's settings subresource. schema: type: string enum: - vector - hybrid - keyword example: vector - name: filter in: query required: false style: deepObject explode: true description: 'Field filters applied before ranking, using `filter[field][operator]=value`. Supported operators: `eq` (default), `in`, `gte`, `gt`, `lte`, `lt`, `contains`. Known fields: `record_type`, `record_id`, `user_id`, `record_created_at`, `ingested_at`; any other name resolves to a `metadata.` filter. Example: `filter[record_id][eq]=rec_123`.' schema: type: object additionalProperties: true - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/collections_PageSize' responses: '200': description: Ranked (or listed) collection documents. content: application/json: schema: $ref: '#/components/schemas/CollectionSearchResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': description: The collection does not exist or is not searchable. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. meta: url: https://developers.telnyx.com/docs/overview/errors/10005 '422': description: The collection has no searchable sources. 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. meta: url: https://developers.telnyx.com/docs/overview/errors/10027 /ai/mcp_servers: get: tags: - MCP Servers summary: List MCP Servers description: Returns a paginated list of the MCP servers configured on your account, with optional filtering by type or URL. operationId: list_mcp_servers parameters: - name: type in: query description: Filter results by type. required: false schema: type: string title: Type - name: url in: query description: Filter results by url. required: false schema: type: string title: Url - name: page[size] in: query description: Number of items to return per page. required: false schema: type: integer maximum: 100 minimum: 1 default: 20 title: Page[Size] - name: page[number] in: query description: Page number to retrieve (1-based). required: false schema: type: integer minimum: 1 default: 1 title: Page[Number] responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MCPServersListResponse' example: - id: Id name: Name type: Type url: Url created_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - MCP Servers summary: Create MCP Server description: Creates a new MCP server configuration on your account and returns the created server. operationId: create_mcp_server parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMCPServerRequest' example: name: Name type: Type url: Url responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MCPServer' example: id: Id name: Name type: Type url: Url created_at: '2024-01-23T18:10:02.574Z' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/mcp_servers/{mcp_server_id}: delete: tags: - MCP Servers summary: Delete MCP Server description: Permanently deletes the specified MCP server configuration from your account. operationId: delete_mcp_server parameters: - name: mcp_server_id in: path description: Unique identifier of the mcp server. required: true schema: type: string title: Mcp Server Id responses: '204': description: MCP server deleted successfully. No content is returned. '400': description: Bad Request (10015). The MCP server cannot be deleted because it is still in use by an active assistant. A server counts as in use when it is referenced by an active assistant's live configuration or by any of its retained version snapshots — so deletion can be refused even when the assistant's current configuration (`mcp_servers`) no longer lists the server. The `detail` names the blocking assistant(s) and their IDs. Remove the server from the assistant's configuration and delete any retained assistant versions that still reference it (see DELETE /ai/assistants/{assistant_id}/versions/{version_id}), then retry. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - MCP Servers summary: Get MCP Server description: Retrieve details for a specific MCP server. operationId: get_mcp_server parameters: - name: mcp_server_id in: path description: Unique identifier of the mcp server. required: true schema: type: string title: Mcp Server Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MCPServer' example: id: Id name: Name type: Type url: Url created_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - MCP Servers summary: Update MCP Server description: Updates the specified MCP server's configuration and returns the updated server. operationId: update_mcp_server parameters: - name: mcp_server_id in: path description: Unique identifier of the mcp server. required: true schema: type: string title: Mcp Server Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMCPServerRequest' example: id: Id name: Name type: Type url: Url created_at: '2024-01-23T18:10:02.574Z' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MCPServer' example: id: Id name: Name type: Type url: Url created_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/memory/namespaces: get: summary: List your namespaces operationId: ListNamespaces tags: - Namespaces description: Every namespace in your organization, `default` among them. responses: '200': description: Your namespaces content: application/json: schema: $ref: '#/components/schemas/NamespaceListResponse' example: data: - id: 1f815759-d4d8-5548-aa5b-077a60b9f8dd name: default - id: b3c17d90-2e4f-5a1b-9c8d-6f0a2b3c4d5e name: staging '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable post: summary: Create a namespace operationId: CreateNamespace tags: - Namespaces description: Create a namespace. An organization can have at most five, `default` among them — a sixth returns `403`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NamespaceCreate' example: name: staging responses: '201': description: The created namespace content: application/json: schema: $ref: '#/components/schemas/NamespaceResponse' example: data: id: b3c17d90-2e4f-5a1b-9c8d-6f0a2b3c4d5e name: staging '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '403': description: Namespace limit reached content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10039' title: Forbidden detail: an organization can have 5 namespaces, `default` among them, and this one already has that many meta: url: https://developers.telnyx.com/docs/overview/errors/10039 '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable /ai/memory/namespaces/{namespace}: delete: summary: Delete a namespace operationId: DeleteNamespace tags: - Namespaces description: Delete a namespace and every profile and memory in it. `default` cannot be deleted. This cannot be undone. parameters: - name: namespace in: path required: true schema: type: string description: The namespace to delete. `default` cannot be deleted. description: The namespace to delete. `default` cannot be deleted. responses: '204': description: The namespace was deleted '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '404': description: No such namespace content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10005' title: Resource not found detail: no such namespace meta: url: https://developers.telnyx.com/docs/overview/errors/10005 '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable /ai/memory/namespaces/{namespace}/operations/{operation_id}: get: summary: Status of a write operationId: GetMemoryOperation tags: - Operations parameters: - name: operation_id in: path required: true schema: type: string title: Operation Id - name: namespace in: path required: true schema: type: string title: Namespace responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OperationResponse' example: data: operation_id: op_01HZY4M7Q9 status: completed created_at: '2026-08-26T21:14:07Z' completed_at: '2026-08-26T21:14:11Z' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The operation does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: operation_not_found detail: no such operation description: Whether a write has finished. Both `ingest` and `remember` return an `operation_id`, and a memory is not recallable until its operation completes — extraction, embedding and consolidation all run first. /ai/memory/namespaces/{namespace}/profiles: get: summary: List a namespace's profiles operationId: ListMemoryProfiles tags: - Profiles description: Profiles are never created, only written to, so this lists the ones that hold a memory. A profile whose first ingest is still running is not here yet. Ordered by memory count, largest first, so a profile written to while the listing is paged can move between pages and be repeated or missed. parameters: - name: namespace in: path required: true schema: type: string title: Namespace - name: page[number] in: query required: false description: 'The page to return, counting from 1. Bounded in depth: (page[number] - 1) * page[size] may be at most 10000.' schema: type: integer maximum: 10001 minimum: 1 default: 1 title: Number - name: page[size] in: query required: false description: How many results a page holds. schema: type: integer maximum: 100 minimum: 1 default: 20 title: Size responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProfileListResponse' example: data: - profile_id: caller:+13128675309 memory_count: 12 meta: page_number: 1 page_size: 20 total_pages: 1 total_results: 1 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: 'limit is no longer supported: page with page[number] and page[size] instead' '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/profiles/{profile_id}: delete: summary: Forget a profile's memories operationId: ForgetProfile tags: - Profiles description: Delete everything held about one profile. A 2xx means none of its memories are left, and its summary goes with them. There is no undo. parameters: - name: namespace in: path required: true schema: type: string description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. - name: profile_id in: path required: true schema: type: string description: 'The profile: your identifier for the user, caller or agent this memory is about.' responses: '200': description: The profile's memories are gone content: application/json: schema: $ref: '#/components/schemas/ForgetResponse' example: data: profile_id: caller:+13128675309 memories_deleted: 12 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/profiles/{profile_id}/ingest: post: summary: Ingest a session's messages into a profile operationId: IngestSession tags: - Memory description: 'Store a session. Facts are extracted from whatever you send — the body is taken as any JSON value and stored whole, so a framework''s own transcript shape works unchanged. `messages` of `role`/`content` is the conventional shape, not a requirement. An empty object or a null body is refused. Carry a `session_id` to name the session: re-ingesting the same one replaces what it held. Omit it and a session is opened and returned. Extraction runs asynchronously — poll the returned operation.' parameters: - name: profile_id in: path required: true schema: type: string title: Profile Id - name: namespace in: path required: true schema: type: string title: Namespace - name: session_id in: query required: false schema: anyOf: - type: string maxLength: 128 - type: 'null' description: 'Names the session. Re-ingesting the same session replaces what it held and keeps its `source_id`. Omit it to have one derived from the content and returned. No whitespace, control characters, or any of / \ # ? %.' title: Session Id description: 'Names the session. Re-ingesting the same session replaces what it held and keeps its `source_id`. Omit it to have one derived from the content and returned. No whitespace, control characters, or any of / \ # ? %.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IngestPayload' examples: session: summary: A session you name value: messages: - role: user content: Invoices go to 220 W Chicago Ave now. - role: assistant content: Got it. new_session: summary: A new session, opened for you value: messages: - role: user content: I prefer email. responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/IngestResponse' example: data: operation_id: op_01HZY4M7Q9 profile_id: caller:+13128675309 session_id: conv_8901 source_id: b1e6c0a2-4f3d-4a2e-9c7b-8e1f2a3b4c5d '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: empty_payload detail: payload must carry something to remember '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/profiles/{profile_id}/memories: get: summary: List a profile's memories, most recent first operationId: ListMemories tags: - Profiles description: 'Everything stored under one profile, unranked -- ask `recall` for the memories that answer a question. A profile that holds nothing is an empty page rather than a 404: profiles exist by being written to. Each memory names the `source_id` it was extracted from, or null for a memory derived from other memories -- which can read almost the same as the fact it restates. A `source_id` narrows the listing to the memories extracted from that source, and a `session_id` to those extracted from the session, which is the same thing named another way; pass one or the other. Neither is everything the source led to: a memory derived from several sources belongs to no single one and appears only in the unfiltered listing. A memory written while the listing is paged shifts the pages after it, so an entry can be repeated or missed at a page boundary.' parameters: - name: profile_id in: path required: true schema: type: string title: Profile Id - name: namespace in: path required: true schema: type: string title: Namespace - name: session_id in: query required: false description: An ingested session, by the `session_id` it was ingested with. Narrows the request to the source that session was stored as. schema: anyOf: - type: string maxLength: 128 - type: 'null' title: Session Id - name: source_id in: query required: false description: Narrows the listing to the memories extracted from one source, a remembered fact as well as a session. Pass this or `session_id`, not both. schema: anyOf: - type: string maxLength: 128 - type: 'null' title: Source Id - name: page[number] in: query required: false description: 'The page to return, counting from 1. Bounded in depth: (page[number] - 1) * page[size] may be at most 10000.' schema: type: integer maximum: 10001 minimum: 1 default: 1 title: Number - name: page[size] in: query required: false description: How many results a page holds. schema: type: integer maximum: 100 minimum: 1 default: 20 title: Size responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MemoryListResponse' example: data: - id: mem_01HZY4 text: Invoices go to 220 W Chicago Ave. recorded_at: '2026-08-26T21:14:11Z' source_id: b1e6c0a2-4f3d-4a2e-9c7b-8e1f2a3b4c5d meta: page_number: 1 page_size: 20 total_pages: 22 total_results: 431 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: pass source_id or session_id, not both '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/profiles/{profile_id}/memories/{memory_id}: get: summary: Read one memory, and what it came from operationId: GetMemory tags: - Profiles description: 'One memory by its id, as `recall` and the listing return it, together with what it came from. A fact names its `source_id`: read it with `GET .../sources/{source_id}` to see what was stored. A memory derived from other memories names them in `derived_from` instead; read each of those to reach its source.' parameters: - name: namespace in: path required: true schema: type: string title: Namespace description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. - name: profile_id in: path required: true schema: type: string title: Profile Id description: 'The profile: your identifier for the user, caller or agent this memory is about.' description: 'The profile: your identifier for the user, caller or agent this memory is about.' - name: memory_id in: path required: true description: A memory's id, as `recall` and the listing return it. schema: type: string title: Memory Id description: A memory's id, as `recall` and the listing return it. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MemoryResponse' example: data: id: mem_01HZY4 text: Invoices go to 220 W Chicago Ave. recorded_at: '2026-08-26T21:14:11Z' source_id: b1e6c0a2-4f3d-4a2e-9c7b-8e1f2a3b4c5d derived_from: null '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: memory id must be a UUID '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The memory does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: memory_not_found detail: no such memory /ai/memory/namespaces/{namespace}/profiles/{profile_id}/recall: post: summary: Recall a profile's memories, ranked operationId: RecallMemories tags: - Memory parameters: - name: profile_id in: path required: true schema: type: string title: Profile Id - name: namespace in: path required: true schema: type: string title: Namespace requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RecallRequest' example: query: where do invoices go? top_k: 5 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RecallResponse' example: data: - id: mem_01HZY4 text: Invoices go to 220 W Chicago Ave. recorded_at: '2026-08-26T21:14:11Z' score: 0.82 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: 'body.query: String should have at least 1 character' '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace description: Ranked memories for a question. Matching runs over the profile's memories and returns them in rank order with a relevance `score`; the score is null where the deployment's reranker is a passthrough, in which case order is the only signal. No model runs in this path — recall returns facts, it does not compose an answer. /ai/memory/namespaces/{namespace}/profiles/{profile_id}/remember: post: summary: Remember one fact, stored as written operationId: RememberFact tags: - Memory description: 'For a fact the agent has already distilled: `text` is stored as given, with nothing extracted from it. Send a transcript to `ingest` instead. Remembering the same text again writes the same memory rather than a second copy of it, so a retry is safe. The write runs asynchronously -- poll the returned operation.' parameters: - name: profile_id in: path required: true schema: type: string title: Profile Id - name: namespace in: path required: true schema: type: string title: Namespace requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RememberRequest' example: text: Prefers window seats and flies out of ORD responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RememberResponse' example: data: operation_id: op_01HZY4M7Q9 profile_id: caller:+13128675309 source_id: 9af23d17-2b6c-4d8e-a1f0-3c4b5d6e7f80 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: 'body.text: String should have at least 1 character' '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/profiles/{profile_id}/sources: get: summary: List a profile's sources, most recently written first operationId: ListMemorySources tags: - Sources description: 'Everything a profile has stored and extracts memories from: each ingested session, and each remembered fact, which has no session. Content is not listed; read one source for it. A source whose ingest is still queued is not here yet. Re-ingesting a session moves it to the front, so a listing paged while sessions are written can repeat or miss one at a page boundary. A `session_id` narrows the listing to the source that session was stored as: one source or none, and none -- an empty page, not a 404 -- for a session never ingested, still queued, or another profile''s.' parameters: - name: namespace in: path required: true schema: type: string title: Namespace - name: profile_id in: path required: true schema: type: string title: Profile Id - name: session_id in: query required: false description: An ingested session, by the `session_id` it was ingested with. Narrows the request to the source that session was stored as. schema: anyOf: - type: string maxLength: 128 - type: 'null' title: Session Id - name: page[number] in: query required: false description: 'The page to return, counting from 1. Bounded in depth: (page[number] - 1) * page[size] may be at most 10000.' schema: type: integer maximum: 10001 minimum: 1 default: 1 title: Number - name: page[size] in: query required: false description: How many results a page holds. schema: type: integer maximum: 100 minimum: 1 default: 20 title: Size responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SourceListResponse' example: data: - id: b1e6c0a2-4f3d-4a2e-9c7b-8e1f2a3b4c5d session_id: conv_8901 memory_count: 3 created_at: '2026-08-26T21:14:11Z' updated_at: '2026-08-26T21:14:11Z' - id: 9af23d17-2b6c-4d8e-a1f0-3c4b5d6e7f80 session_id: null memory_count: 1 created_at: '2026-08-25T09:02:44Z' updated_at: '2026-08-25T09:02:44Z' meta: page_number: 1 page_size: 20 total_pages: 1 total_results: 2 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: 'limit is no longer supported: page with page[number] and page[size] instead' '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/profiles/{profile_id}/sources/{source_id}: delete: summary: Forget one source operationId: ForgetSource tags: - Sources description: Deletes one source -- an ingested session or a remembered fact -- together with the memories derived from it. A memory derived from this source and others is deleted too, and derived again from what remains in the background. It answers only once the source is gone. A source that is not there -- never stored, another profile's, or already deleted -- answers 404, so on a `502` or a `504` repeat the identical request and read a 404 as done. An ingest of the same session that is still queued is not cancelled, and stores the session again when it runs. Nothing here can be undone. parameters: - name: namespace in: path required: true schema: type: string title: Namespace description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. - name: profile_id in: path required: true schema: type: string title: Profile Id description: 'The profile: your identifier for the user, caller or agent this memory is about.' description: 'The profile: your identifier for the user, caller or agent this memory is about.' - name: source_id in: path required: true 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.' schema: 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.' responses: '200': description: The source and its memories are gone content: application/json: schema: $ref: '#/components/schemas/ForgetSourceResponse' example: data: profile_id: caller:+13128675309 source_id: b1e6c0a2-4f3d-4a2e-9c7b-8e1f2a3b4c5d memories_deleted: 3 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: source id must be a UUID '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The source does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: source_not_found detail: no such source get: summary: Read one source, with what was stored operationId: GetMemorySource tags: - Sources description: 'One source and its content, as it was stored: an ingested session''s payload or a remembered fact. A source whose ingest is still queued answers 404 until it has been stored.' parameters: - name: namespace in: path required: true schema: type: string title: Namespace description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. - name: profile_id in: path required: true schema: type: string title: Profile Id description: 'The profile: your identifier for the user, caller or agent this memory is about.' description: 'The profile: your identifier for the user, caller or agent this memory is about.' - name: source_id in: path required: true 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.' schema: 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.' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SourceResponse' example: data: id: b1e6c0a2-4f3d-4a2e-9c7b-8e1f2a3b4c5d session_id: conv_8901 memory_count: 3 created_at: '2026-08-26T21:14:11Z' updated_at: '2026-08-26T21:14:11Z' content: messages: - role: user content: invoices go to 220 W Chicago Ave now '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_request detail: source id must be a UUID '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The source does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: source_not_found detail: no such source /ai/memory/namespaces/{namespace}/profiles/{profile_id}/summary: get: summary: Get a profile's precomputed summary operationId: GetProfileSummary tags: - Memory description: 'The whole profile as one card, precomputed, with no query. Built for the start of a session, where there is no question to ask yet. A summary is generated in the background. `is_stale` tells you newer memories have arrived since it was written; that is ordinary and the card is still usable.' parameters: - name: namespace in: path required: true schema: type: string description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. - name: profile_id in: path required: true schema: type: string description: 'The profile: your identifier for the user, caller or agent this memory is about.' responses: '200': description: The profile's summary content: application/json: schema: $ref: '#/components/schemas/SummaryResponse' example: data: profile_id: user-42 text: '## Profile Summary - Prefers Slack over email. - Timezone: US Central.' generated_at: '2026-09-18T18:32:17.501833+00:00' is_stale: false '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/profiles/{profile_id}/summary/preview: post: summary: Preview a candidate note before saving it operationId: PreviewSummaryInstructions tags: - Memory description: 'Try a candidate note on one profile and see how that profile''s summary would read under it, without saving the note and without touching the stored summary. Composes the same source query the apply path (`PATCH /ai/memory/namespaces/{namespace}/settings`) would use, so a preview cannot drift from what saving the note would produce. Reads the candidate alone -- the namespace''s current instructions and the profile''s stored summary are neither read nor replaced. Bounded at 120 seconds: the summary is generated on the spot rather than read from a stored one. Nothing about the request is stored.' parameters: - name: namespace in: path required: true schema: type: string description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. - name: profile_id in: path required: true schema: type: string description: 'The profile: your identifier for the user, caller or agent this memory is about.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PreviewSummaryRequest' example: instructions: Lead with billing status. Prefer plain language over jargon. responses: '200': description: The summary this profile would carry under the candidate note. `data.text` is `null` when nothing was generated -- the same signal `GET /summary` uses for a profile with no card yet. content: application/json: schema: $ref: '#/components/schemas/PreviewSummaryResponse' example: data: profile_id: user-42 text: '## Profile Summary - Billing: current, autopay on. - Prefers Slack over email.' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: The candidate note is longer than the 2000-character cap -- refused before anything is generated. The cap is the one `PATCH /settings` applies on save. content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_instructions detail: instructions must be at most 2000 characters '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/memory/namespaces/{namespace}/settings: get: summary: Get a namespace's settings operationId: GetNamespaceSettings tags: - Settings description: 'What is currently set for this namespace. `instructions: null` means none are set and summaries use the neutral default.' parameters: - name: namespace in: path required: true schema: type: string description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. responses: '200': description: The namespace's settings content: application/json: schema: $ref: '#/components/schemas/NamespaceSettingsResponse' example: data: summary: instructions: null '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace patch: summary: Change a namespace's settings operationId: UpdateNamespaceSettings tags: - Settings description: 'Only the fields you send are changed; anything omitted is left as it is, so `{}` changes nothing. Sending `instructions: null`, or an empty or whitespace-only string, clears them and returns summaries to the neutral default. Instructions are capped at 2000 characters. A longer note is refused rather than truncated, because a note cut mid-sentence is a worse steer than none. A change reaches each summary the next time that summary is regenerated, not immediately.' parameters: - name: namespace in: path required: true schema: type: string description: The namespace. `default` exists for every organization. description: The namespace. `default` exists for every organization. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NamespaceSettingsPatch' example: summary: instructions: Lead with the customer's plan tier. Keep it under 100 words. responses: '200': description: The settings as stored content: application/json: schema: $ref: '#/components/schemas/NamespaceSettingsResponse' example: data: summary: instructions: Lead with the customer's plan tier. Keep it under 100 words. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: '10009' title: Authentication failed detail: Could not find any usable credentials in the request. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10009 '422': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: invalid_instructions detail: instructions must be at most 2000 characters '502': description: Upstream error content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: upstream_error detail: the memory dataplane is unavailable '404': description: The namespace does not exist content: application/json: schema: $ref: '#/components/schemas/TelnyxErrors' example: errors: - code: namespace_not_found detail: no such namespace /ai/missions: get: tags: - Missions summary: List missions description: Returns a paginated list of all mission definitions in your organization. Missions describe a goal and the tools, knowledge bases, and MCP servers agents may use to accomplish it. operationId: get_public_missions_missions parameters: - name: page[number] in: query required: false schema: type: integer minimum: 1 description: Page number (1-based) default: 1 title: Page[Number] description: Page number (1-based) - name: page[size] in: query required: false schema: type: integer maximum: 1000 exclusiveMinimum: 0 description: Number of items per page default: 20 title: Page[Size] description: Number of items per page responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionsListResponse' example: data: - mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description model: Model instructions: Instructions execution_mode: external created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Create mission description: Creates a new mission definition from the provided configuration and returns the created mission. Execute the mission by starting runs against it. operationId: post_public_missions_missions requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMissionRequest' example: name: Name description: Description model: Model instructions: Instructions execution_mode: external responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionResponse' example: data: mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description model: Model instructions: Instructions execution_mode: external created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/events: get: tags: - Missions summary: List recent events description: Returns a paginated list of recent events across every mission in your organization, optionally filtered by event type. Useful for building activity feeds or monitoring dashboards. operationId: get_public_missions_missions_events parameters: - name: type in: query description: Filter results by type. required: false schema: title: Type type: string - name: page[number] in: query required: false schema: type: integer minimum: 1 description: Page number (1-based) default: 1 title: Page[Number] description: Page number (1-based) - name: page[size] in: query required: false schema: type: integer maximum: 1000 exclusiveMinimum: 0 description: Number of items per page default: 50 title: Page[Size] description: Number of items per page responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EventsListResponse' example: data: - event_id: Event Id run_id: Run Id type: status_change summary: Summary timestamp: '2024-01-23T18:10:02.574Z' step_id: Step Id agent_id: Agent Id idempotency_key: Idempotency Key meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/runs: get: tags: - Missions summary: List recent runs description: Returns a paginated list of recent runs across every mission in your organization, optionally filtered by run status. Useful for monitoring overall mission activity without querying each mission individually. operationId: get_public_missions_missions_runs parameters: - name: status in: query description: Filter results by status. required: false schema: title: Status type: string - name: page[number] in: query required: false schema: type: integer minimum: 1 description: Page number (1-based) default: 1 title: Page[Number] description: Page number (1-based) - name: page[size] in: query required: false schema: type: integer maximum: 1000 exclusiveMinimum: 0 description: Number of items per page default: 20 title: Page[Size] description: Number of items per page responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunsListResponse' example: data: - run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: pending started_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}: delete: tags: - Missions summary: Delete mission description: Permanently deletes the specified mission definition and returns no content on success. operationId: delete_public_missions_missions_mission_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Missions summary: Get mission description: Get a mission by ID (includes tools, knowledge_bases, mcp_servers) operationId: get_public_missions_missions_mission_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionResponse' example: data: mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description model: Model instructions: Instructions execution_mode: external created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Missions summary: Update mission description: Replaces the specified mission's definition with the provided configuration and returns the updated mission. operationId: put_public_missions_missions_mission_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMissionRequest' example: name: Name description: Description model: Model instructions: Instructions execution_mode: external responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionResponse' example: data: mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Name description: Description model: Model instructions: Instructions execution_mode: external created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/clone: post: tags: - Missions summary: Clone mission description: Creates a copy of the specified mission as a new mission definition, so you can iterate on its configuration without modifying the original. operationId: post_public_missions_missions_mission_id_clone parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id responses: '201': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/knowledge-bases: get: tags: - Missions summary: List knowledge bases description: Returns the knowledge bases attached to the specified mission. Knowledge bases provide reference content agents can draw on during runs. operationId: get_public_missions_missions_mission_id_knowledge_bases parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Create knowledge base description: Create a new knowledge base for a mission operationId: post_public_missions_missions_mission_id_knowledge_bases parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id responses: '201': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}: delete: tags: - Missions summary: Delete knowledge base description: Detaches the specified knowledge base from the mission so its content is no longer available to agents in subsequent runs. operationId: delete_public_missions_missions_mission_id_knowledge_bases_knowledge_base_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: knowledge_base_id in: path description: Unique identifier of the knowledge base. required: true schema: type: string title: Knowledge Base Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Missions summary: Get knowledge base description: Returns the details of a single knowledge base attached to the specified mission. operationId: get_public_missions_missions_mission_id_knowledge_bases_knowledge_base_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: knowledge_base_id in: path description: Unique identifier of the knowledge base. required: true schema: type: string title: Knowledge Base Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Missions summary: Update knowledge base description: Replaces the definition of the specified knowledge base on this mission. operationId: put_public_missions_missions_mission_id_knowledge_bases_knowledge_base_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: knowledge_base_id in: path description: Unique identifier of the knowledge base. required: true schema: type: string title: Knowledge Base Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/mcp-servers: get: tags: - Missions summary: List MCP servers description: Returns the MCP servers configured on the specified mission. MCP servers expose external tools and data sources agents can use during runs. operationId: get_public_missions_missions_mission_id_mcp_servers parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Create MCP server description: Adds an MCP server to the specified mission, making the server's tools available to agents during runs of this mission. operationId: post_public_missions_missions_mission_id_mcp_servers parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id responses: '201': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}: delete: tags: - Missions summary: Delete MCP server description: Removes the specified MCP server from the mission, revoking agent access to its tools in subsequent runs. operationId: delete_public_missions_missions_mission_id_mcp_servers_mcp_server_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: mcp_server_id in: path description: Unique identifier of the mcp server. required: true schema: type: string title: Mcp Server Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Missions summary: Get MCP server description: Returns the configuration of a single MCP server attached to the specified mission. operationId: get_public_missions_missions_mission_id_mcp_servers_mcp_server_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: mcp_server_id in: path description: Unique identifier of the mcp server. required: true schema: type: string title: Mcp Server Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Missions summary: Update MCP server description: Replaces the configuration of the specified MCP server on this mission. operationId: put_public_missions_missions_mission_id_mcp_servers_mcp_server_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: mcp_server_id in: path description: Unique identifier of the mcp server. required: true schema: type: string title: Mcp Server Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs: get: tags: - Missions summary: List runs for mission description: Returns a paginated list of runs for the specified mission, optionally filtered by run status, so you can track the mission's execution history over time. operationId: get_public_missions_missions_mission_id_runs parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: status in: query description: Filter results by status. required: false schema: title: Status type: string - name: page[number] in: query required: false schema: type: integer minimum: 1 description: Page number (1-based) default: 1 title: Page[Number] description: Page number (1-based) - name: page[size] in: query required: false schema: type: integer maximum: 1000 exclusiveMinimum: 0 description: Number of items per page default: 20 title: Page[Size] description: Number of items per page responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunsListResponse' example: data: - run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: pending started_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Start a run description: Starts a new run of the specified mission and returns the created run object. Track its progress through the run detail, plan, and events endpoints. operationId: post_public_missions_missions_mission_id_runs parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateMissionRunRequest' default: {} example: input: objective: Summarize yesterday's failed call attempts metadata: requested_by: docs-example responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunResponse' example: data: run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: pending started_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}: get: tags: - Missions summary: Get run details description: Returns the full details of a single run, including its current status. Use this to poll an in-flight run or inspect the outcome of a completed one. operationId: get_public_missions_missions_mission_id_runs_run_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunResponse' example: data: run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: pending started_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - Missions summary: Update run description: Updates a run's status and/or result and returns the updated run object. Typically used by executing agents to report progress or record the final outcome. operationId: patch_public_missions_missions_mission_id_runs_run_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMissionRunRequest' example: status: succeeded result_summary: Processed 24 customer records successfully. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunResponse' example: data: run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: succeeded started_at: '2024-01-23T18:10:02.574Z' finished_at: '2024-01-23T18:10:02.574Z' result_summary: Processed 24 customer records successfully. updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/cancel: post: tags: - Missions summary: Cancel run description: Cancels a running or paused run and returns the updated run object. A cancelled run stops executing; start a new run to execute the mission again. operationId: post_public_missions_missions_mission_id_runs_run_id_cancel parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunResponse' example: data: run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: cancelled started_at: '2024-01-23T18:10:02.574Z' finished_at: '2024-01-23T18:10:02.574Z' result_summary: Mission run cancelled before completion. updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/events: get: tags: - Missions summary: List events description: Returns a paginated list of events logged for the specified run, filterable by event type, plan step, and agent, so you can reconstruct exactly what happened during execution. operationId: get_public_missions_missions_mission_id_runs_run_id_events parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id - name: type in: query description: Filter results by type. required: false schema: title: Type type: string - name: step_id in: query description: Filter results by step id. required: false schema: title: Step Id type: string - name: agent_id in: query description: Filter results by agent id. required: false schema: title: Agent Id type: string - name: page[number] in: query required: false schema: type: integer minimum: 1 description: Page number (1-based) default: 1 title: Page[Number] description: Page number (1-based) - name: page[size] in: query required: false schema: type: integer maximum: 1000 exclusiveMinimum: 0 description: Number of items per page default: 50 title: Page[Size] description: Number of items per page responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EventsListResponse' example: data: - event_id: Event Id run_id: Run Id type: status_change summary: Summary timestamp: '2024-01-23T18:10:02.574Z' step_id: Step Id agent_id: Agent Id idempotency_key: Idempotency Key meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Log event description: Logs a new event against the specified run and returns the created event. Events form the run's audit trail and can reference a plan step or agent. operationId: post_public_missions_missions_mission_id_runs_run_id_events parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEventRequest' example: type: status_change summary: Summary step_id: Step Id agent_id: Agent Id idempotency_key: Idempotency Key responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EventResponse' example: data: event_id: Event Id run_id: Run Id type: status_change summary: Summary timestamp: '2024-01-23T18:10:02.574Z' step_id: Step Id agent_id: Agent Id idempotency_key: Idempotency Key '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/events/{event_id}: get: tags: - Missions summary: Get event details description: Returns the details of a single event logged for the specified run, including its type and payload. operationId: get_public_missions_missions_mission_id_runs_run_id_events_event_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id - name: event_id in: path description: Unique identifier of the event. required: true schema: type: string title: Event Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/EventResponse' example: data: event_id: Event Id run_id: Run Id type: status_change summary: Summary timestamp: '2024-01-23T18:10:02.574Z' step_id: Step Id agent_id: Agent Id idempotency_key: Idempotency Key '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/pause: post: tags: - Missions summary: Pause run description: Pauses a currently running run and returns the updated run object. Execution halts until the run is resumed. operationId: post_public_missions_missions_mission_id_runs_run_id_pause parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunResponse' example: data: run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: paused started_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/plan: get: tags: - Missions summary: Get plan description: Returns the plan for the specified run, including all plan steps and their statuses, so you can see how the mission was decomposed and how far execution has progressed. operationId: get_public_missions_missions_mission_id_runs_run_id_plan parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PlanResponse' example: data: - step_id: Step Id run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 parent_step_id: Parent Step Id sequence: 0 description: Description status: pending started_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Create initial plan description: Creates the initial plan for the specified run from the provided steps and returns the created plan steps. Progress is subsequently reported by updating individual steps. operationId: post_public_missions_missions_mission_id_runs_run_id_plan parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePlanRequest' example: steps: - step_id: Step Id description: Description sequence: 0 parent_step_id: Parent Step Id responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PlanStepsCreatedResponse' example: data: - step_id: Step Id run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 parent_step_id: Parent Step Id sequence: 0 description: Description status: pending started_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/plan/steps: post: tags: - Missions summary: Add step(s) to plan description: Add one or more steps to an existing plan operationId: post_public_missions_missions_mission_id_runs_run_id_plan_steps parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddPlanStepsRequest' example: steps: - step_id: Step Id description: Description sequence: 0 parent_step_id: Parent Step Id responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PlanStepsCreatedResponse' example: data: - step_id: Step Id run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 parent_step_id: Parent Step Id sequence: 0 description: Description status: pending started_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}: get: tags: - Missions summary: Get step details description: Returns the details of a single plan step within a run's plan, including its status. operationId: get_public_missions_missions_mission_id_runs_run_id_plan_steps_step_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id - name: step_id in: path description: Unique identifier of the step. required: true schema: type: string title: Step Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PlanStepResponse' example: data: step_id: Step Id run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 parent_step_id: Parent Step Id sequence: 0 description: Description status: pending started_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - Missions summary: Update step status description: Updates the status of a single plan step and returns the updated step. Typically called by the executing agent as it works through the plan. operationId: patch_public_missions_missions_mission_id_runs_run_id_plan_steps_step_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id - name: step_id in: path description: Unique identifier of the step. required: true schema: type: string title: Step Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePlanStepRequest' example: status: pending responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PlanStepResponse' example: data: step_id: Step Id run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 parent_step_id: Parent Step Id sequence: 0 description: Description status: pending started_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/resume: post: tags: - Missions summary: Resume run description: Resumes a previously paused run and returns the updated run object, letting execution continue from where it was paused. operationId: post_public_missions_missions_mission_id_runs_run_id_resume parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MissionRunResponse' example: data: run_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mission_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: running started_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents: get: tags: - Missions summary: List linked Telnyx agents description: Returns the Telnyx agents currently linked to the specified run. Linked agents participate in executing the run's plan. operationId: get_public_missions_missions_mission_id_runs_run_id_telnyx_agents parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxAgentsListResponse' example: data: - run_id: Run Id telnyx_agent_id: Telnyx Agent Id created_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Link Telnyx agent to run description: Link a Telnyx AI agent (voice/messaging) to a run operationId: post_public_missions_missions_mission_id_runs_run_id_telnyx_agents parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LinkTelnyxAgentRequest' example: telnyx_agent_id: Telnyx Agent Id responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TelnyxAgentResponse' example: data: run_id: Run Id telnyx_agent_id: Telnyx Agent Id created_at: '2024-01-23T18:10:02.574Z' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents/{telnyx_agent_id}: delete: tags: - Missions summary: Unlink Telnyx agent description: Unlinks the specified Telnyx agent from the run so it no longer participates in execution. The run itself and its history are unaffected. operationId: delete_public_missions_missions_mission_id_runs_run_id_telnyx_agents_telnyx_agent_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string format: uuid title: Mission Id - name: run_id in: path description: Unique identifier of the run. required: true schema: type: string format: uuid title: Run Id - name: telnyx_agent_id in: path description: Unique identifier of the telnyx agent. required: true schema: type: string title: Telnyx Agent Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type /ai/missions/{mission_id}/tools: get: tags: - Missions summary: List tools description: Returns the tools configured on the specified mission. Tools define the actions agents may invoke while executing the mission's runs. operationId: get_public_missions_missions_mission_id_tools parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Missions summary: Create tool description: Adds a new tool to the specified mission, defining an action agents can invoke during runs of this mission. operationId: post_public_missions_missions_mission_id_tools parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id responses: '201': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/missions/{mission_id}/tools/{tool_id}: delete: tags: - Missions summary: Delete tool description: Removes the specified tool from the mission so agents can no longer invoke it in subsequent runs. operationId: delete_public_missions_missions_mission_id_tools_tool_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' example: detail: - loc: - string msg: Message type: Error Type get: tags: - Missions summary: Get tool description: Returns the definition of a single tool configured on the specified mission. operationId: get_public_missions_missions_mission_id_tools_tool_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Missions summary: Update tool description: Replaces the definition of the specified tool on this mission. operationId: put_public_missions_missions_mission_id_tools_tool_id parameters: - name: mission_id in: path description: Unique identifier of the mission. required: true schema: type: string title: Mission Id - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id responses: '200': description: Successful Response content: application/json: schema: {} example: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/models: get: tags: - Chat summary: Get available models description: '**Deprecated**: Use `GET /v2/ai/openai/models` instead. Returns the same `ModelsResponse` payload as the OpenAI-compatible endpoint — open-source LLMs hosted on Telnyx (e.g. `moonshotai/Kimi-K2.6`, `zai-org/GLM-5.1-FP8`, `MiniMaxAI/MiniMax-M2.7`), embedding models, and fine-tuned models — kept around for backwards compatibility. New integrations should use `/v2/ai/openai/models`. Model ids follow the `{organization}/{model_name}` convention from Hugging Face.' operationId: get_models_public_models_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ModelsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' deprecated: true x-hidden: true /ai/openai/chat/completions: post: tags: - OpenAI Chat summary: Create a chat completion (OpenAI-compatible) description: Chat with a language model. This endpoint is consistent with the [OpenAI Chat Completions API](https://platform.openai.com/docs/api-reference/chat) and may be used with the OpenAI JS or Python SDK by setting the base URL to `https://api.telnyx.com/v2/ai/openai`. operationId: create_openai_chat_completion requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChatCompletionRequest' example: messages: - role: system content: You are a friendly chatbot. - role: user content: Hello, world! responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true example: id: chatcmpl-8b1f2a3c9d4e5f6a object: chat.completion created: 1706011802 model: meta-llama/Meta-Llama-3.1-8B-Instruct choices: - index: 0 message: role: assistant content: Telnyx provides carrier-grade voice, messaging, and AI inference through one API. finish_reason: stop usage: prompt_tokens: 24 completion_tokens: 18 total_tokens: 42 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/openai/embeddings: post: tags: - OpenAI Embeddings summary: Create embeddings description: Creates an embedding vector representing the input text. This endpoint is compatible with the [OpenAI Embeddings API](https://platform.openai.com/docs/api-reference/embeddings) and may be used with the OpenAI JS or Python SDK by setting the base URL to `https://api.telnyx.com/v2/ai/openai`. operationId: create_openai_embeddings requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OpenAIEmbeddingRequest' example: input: The quick brown fox jumps over the lazy dog model: thenlper/gte-large responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OpenAIEmbeddingResponse' example: object: list data: - object: embedding embedding: - 0 index: 0 model: string usage: prompt_tokens: 0 total_tokens: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/openai/embeddings/models: get: tags: - OpenAI Embeddings summary: List embedding models description: Returns a list of available embedding models. This endpoint is compatible with the OpenAI Models API format. operationId: list_openai_embedding_models responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/OpenAIEmbeddingModelsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/openai/models: get: tags: - OpenAI Chat summary: Get available models (OpenAI-compatible) description: 'Lists every model currently available to your account on Telnyx Inference, including SOTA open-source LLMs hosted on Telnyx GPUs (for example `moonshotai/Kimi-K2.6`, `zai-org/GLM-5.1-FP8`, and `MiniMaxAI/MiniMax-M2.7`), embedding models, and any fine-tuned models you have created. Each entry is a `ModelMetadata` object describing the model id, owner, task, context length, supported languages, billing tier, pricing per 1M tokens, deployment regions, and whether the model supports vision or fine-tuning. Use this endpoint to discover model ids you can pass to `POST /v2/ai/openai/chat/completions`. Model ids follow the `{organization}/{model_name}` convention from Hugging Face (for example `moonshotai/Kimi-K2.6`). This endpoint is OpenAI-compatible: clients pointed at `https://api.telnyx.com/v2/ai/openai` can call `client.models.list()` to retrieve the same payload.' operationId: list_openai_models responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ModelsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/openai/responses: post: tags: - OpenAI Chat summary: Create an OpenAI-compatible response description: 'Create a response using Telnyx''s OpenAI-compatible Responses API. This endpoint is compatible with the [OpenAI Responses API](https://developers.openai.com/api/reference/responses/overview) and may be used with the OpenAI JS or Python SDK by setting the base URL to `https://api.telnyx.com/v2/ai/openai`. The `conversation` parameter refers to a Telnyx Conversation rather than an OpenAI-hosted conversation object. To persist a thread across turns, first [create a conversation](https://developers.telnyx.com/api-reference/conversations/create-a-conversation) with `POST /ai/conversations`, then pass that conversation''s `id` in the Responses request as `conversation`. The endpoint appends the new input, assistant output, reasoning, and tool-call messages to that conversation. Reuse the same `conversation` id on subsequent Responses requests, including tool-result followups, so the model receives the prior context. If `conversation` is omitted, the request is processed without persisting messages to a Telnyx conversation. Use the Conversations API to manage history: [list conversations](https://developers.telnyx.com/api-reference/conversations/list-conversations) (optionally filtered by metadata), [fetch messages](https://developers.telnyx.com/api-reference/conversations/get-conversation-messages) for a conversation, and optionally [add messages](https://developers.telnyx.com/api-reference/conversations/create-message) outside the Responses flow. You can attach arbitrary metadata when creating a conversation (for example to tag the conversation''s source, channel, or user) and later filter by it when listing conversations.' operationId: chat_public_openai_responses_completions_post requestBody: required: true content: application/json: schema: type: object additionalProperties: true properties: model: type: string description: Model identifier to use for the response, for example `zai-org/GLM-5.1-FP8` or another model available from the Telnyx OpenAI-compatible models endpoint. 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`.' input: description: The input items for this turn, using the OpenAI Responses API input format. conversation: type: string format: uuid description: Optional Telnyx Conversation ID from `POST /ai/conversations`. When provided, Telnyx stores this turn on that conversation and uses the conversation's prior messages as context. Reuse the same ID for subsequent turns and tool-result followups. Omit it for a non-persisted, stateless response. instructions: type: string description: Optional system/developer instructions for the model. When used with a persisted `conversation`, send these on the first request that creates the thread; subsequent turns can rely on the stored history. stream: type: boolean description: Set to `true` to stream Server-Sent Events, matching OpenAI's Responses streaming format. reasoning: type: object properties: effort: type: string enum: - none - minimal - low - medium - high - xhigh - max description: Controls the reasoning effort for models that support it. Same values and semantics as reasoning_effort on Chat Completions. example: model: zai-org/GLM-5.1-FP8 conversation: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 instructions: You are a friendly chatbot. input: - role: user content: - type: input_text text: Hello, world! stream: false responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true example: id: resp_8b1f2a3c9d4e5f6a object: response created_at: 1706011802 status: completed model: zai-org/GLM-5.1-FP8 output: - type: message id: msg_8b1f2a3c9d4e5f6a role: assistant content: - type: output_text text: Telnyx provides carrier-grade voice, messaging, and AI inference through one API. usage: input_tokens: 24 output_tokens: 18 total_tokens: 42 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /ai/responses: post: tags: - Chat summary: Create a response description: '**Deprecated**: Use `POST /v2/ai/openai/responses` instead. This endpoint is compatible with the [OpenAI Responses API](https://developers.openai.com/api/reference/responses/overview) and may be used with the OpenAI JS or Python SDK. Response id parameter is not supported at the moment. Use the `conversation` parameter with a Telnyx Conversation ID to leverage persistent conversations.' operationId: chat_public_responses_completions_post requestBody: required: true content: application/json: schema: type: object additionalProperties: true example: model: zai-org/GLM-5.1-FP8 input: - role: system content: - type: input_text text: You are a friendly chatbot. - role: user content: - type: input_text text: Hello, world! responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' deprecated: true x-hidden: true /ai/summarize: post: tags: - Chat summary: Summarize file content description: "Generate a summary of a file's contents. \n\n Supports the following text formats: \n- PDF, HTML, txt,\ \ json, csv\n\n Supports the following media formats (billed for both the transcription and summary): \n- flac, mp3,\ \ mp4, mpeg, mpga, m4a, ogg, wav, or webm\n- Up to 100 MB" operationId: PostSummary parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/SummaryRequest' example: bucket: string filename: string system_prompt: string required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SummaryResponseData' example: data: summary: Summary headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/tools: get: tags: - Assistants summary: List Tools operationId: list_tools parameters: - name: filter[type] in: query description: Filter results by filter type. required: false schema: title: Filter[Type] type: string - name: filter[name] in: query description: Filter results by filter name. required: false schema: title: Filter[Name] type: string - name: page[size] in: query description: Number of items to return per page. required: false schema: type: integer maximum: 100 minimum: 1 default: 20 title: Page[Size] - name: page[number] in: query description: Page number to retrieve (1-based). required: false schema: type: integer minimum: 1 default: 1 title: Page[Number] responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SharedToolListResponse' example: data: - id: Id type: Type display_name: Display Name timeout_ms: 5000 created_at: Created At tool_definition: type: webhook meta: total_pages: 0 total_results: 0 page_number: 0 page_size: 0 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Retrieve a list of the custom AI tools configured on your account. post: tags: - Assistants summary: Create Tool description: Create a new custom AI tool that can be attached to AI assistants. operationId: create_tool_post parameters: - $ref: '#/components/parameters/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateSharedToolRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SharedToolResponse' example: id: Id type: Type display_name: Display Name timeout_ms: 5000 created_at: Created At tool_definition: type: webhook headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027. content: application/json: schema: anyOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/inference-embedding_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' /ai/tools/{tool_id}: delete: tags: - Assistants summary: Delete Tool operationId: delete_tool_tool_id parameters: - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id responses: '204': description: Tool deleted successfully. No content is returned. '400': description: 'Bad Request (10015). The tool cannot be deleted: it is a predefined system tool (clone it instead to get a deletable copy), it is currently used by an active assistant, or it is referenced by a soft-deleted (Recently Deleted) assistant. References from soft-deleted assistants block deletion until those assistants are permanently deleted or restored and detached from the tool. The `detail` names the referencing assistant(s) and the remedy.' content: application/json: schema: $ref: '#/components/schemas/inference-embedding_ErrorResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Permanently deletes the specified custom AI tool from your account. get: tags: - Assistants summary: Get Tool operationId: get_tool_tool_id parameters: - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SharedToolResponse' example: id: Id type: Type display_name: Display Name timeout_ms: 5000 created_at: Created At tool_definition: type: webhook '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Retrieve the details of a specific AI tool. patch: tags: - Assistants summary: Update Tool operationId: update_tool_tool_id parameters: - name: tool_id in: path description: Unique identifier of the tool. required: true schema: type: string title: Tool Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateSharedToolRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SharedToolResponse' example: id: Id type: Type display_name: Display Name timeout_ms: 5000 created_at: Created At tool_definition: type: webhook '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Update the configuration of an existing AI tool. /ai/typesafe/v1/systemone: post: tags: - Decision Models summary: Evaluate decision models (TypeSafe-compatible) description: '**Beta API.** Choose telnyx/decision-flash for the lowest cost and latency, or telnyx/decision-pro for decisions that require long context, including inputs beyond Jev’s 32k per-decision limit. Omitted model defaults to telnyx/decision-flash. Evaluate shared context using named choice, noul (yes/no), and score questions. Returns TypeSafe System One-compatible answer shapes, the selected public model alias, and token usage. See the [decision model guide](https://developers.telnyx.com/docs/inference/decision-models) for examples and compatibility limits. The supported request subset requires instructions for every question, string descriptions for criteria (or null for choice descriptions), 1–64 questions, and 2–64 options for choice and score questions. The model field accepts only telnyx/decision-flash or telnyx/decision-pro. Unsupported model values and unknown fields are rejected. The endpoint is synchronous and does not stream. Use the TypeSafe Python SDK with base_url set to https://api.telnyx.com/v2/ai/typesafe and a Telnyx API key. The SDK appends /v1/systemone; explicitly set model to a supported Telnyx alias because its own default model is not supported. Compatibility covers this operation and the documented request subset; it does not include TypeSafe model listing. Scores describe relative preference, not calibrated correctness.' operationId: create_typesafe_systemone requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DecisionModelRequest' 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 responses: '200': description: All questions evaluated successfully. The response is a complete JSON object, not a stream. content: application/json: schema: $ref: '#/components/schemas/DecisionModelResponse' 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 '401': description: Unauthorized. Supply a valid Telnyx API key. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Authentication required. '413': description: Request body is too large or incomplete. Reduce or fix the request. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Request body too large. '422': description: Invalid schema or input token limit exceeded. Correct or split the request before retrying. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Question "team" requires instructions. '429': description: Too many requests. Reduce concurrency and retry with backoff. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Too many requests. headers: Retry-After: description: When present, wait this many seconds before retrying. schema: type: integer minimum: 0 '502': description: The scoring service failed. Retry with bounded backoff. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Scoring service failed. '503': description: The decision model service is unavailable. Retry with bounded backoff. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Decision model service unavailable. headers: Retry-After: description: When present, wait this many seconds before retrying. schema: type: integer minimum: 0 '504': description: Evaluation deadline exceeded. Reduce request size or concurrency before retrying. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Evaluation deadline exceeded. '529': description: The decision model service is at capacity. Retry with bounded backoff. content: application/json: schema: $ref: '#/components/schemas/DecisionModelError' example: error: message: Decision model service at capacity. headers: Retry-After: description: When present, wait this many seconds before retrying. schema: type: integer minimum: 0 x-beta: true /alphanumeric_sender_ids: get: summary: List alphanumeric sender IDs description: List all alphanumeric sender IDs for the authenticated user. operationId: ListAlphanumericSenderIds tags: - Messaging parameters: - name: filter[messaging_profile_id] in: query required: false schema: type: string format: uuid description: Filter by messaging profile ID. - name: page[number] in: query required: false schema: type: integer default: 1 description: Page number. - name: page[size] in: query required: false schema: type: integer default: 20 description: Page size. 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' '422': $ref: '#/components/responses/messaging_UnprocessableEntityResponse_0b38e7044b' post: summary: Create an alphanumeric sender ID description: Create a new alphanumeric sender ID associated with a messaging profile. operationId: CreateAlphanumericSenderId tags: - Messaging requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAlphanumericSenderIdRequest' responses: '201': description: Successful response with a single alphanumeric sender ID. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AlphanumericSenderId' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '422': $ref: '#/components/responses/messaging_UnprocessableEntityResponse_0b38e7044b' /alphanumeric_sender_ids/{id}: delete: summary: Delete an alphanumeric sender ID description: Delete an alphanumeric sender ID and disassociate it from its messaging profile. operationId: DeleteAlphanumericSenderId tags: - Messaging parameters: - name: id in: path required: true schema: type: string description: The identifier of the alphanumeric sender ID. responses: '200': description: Successful response with a single alphanumeric sender ID. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AlphanumericSenderId' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' get: summary: Retrieve an alphanumeric sender ID description: Retrieve a specific alphanumeric sender ID. operationId: GetAlphanumericSenderId tags: - Messaging parameters: - name: id in: path required: true schema: type: string description: The identifier of the alphanumeric sender ID. responses: '200': description: Successful response with a single alphanumeric sender ID. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AlphanumericSenderId' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' /audit_events: get: summary: List Audit Logs description: Retrieve a list of audit log entries. Audit logs are a best-effort, eventually consistent record of significant account-related changes. operationId: ListAuditLogs tags: - Audit Logs parameters: - $ref: '#/components/parameters/audit-logs_PageConsolidated' - $ref: '#/components/parameters/audit-logs_FilterConsolidated' - $ref: '#/components/parameters/Sort' responses: '200': description: A list of audit log entries. content: application/json: schema: $ref: '#/components/schemas/AuditLogList' '401': $ref: '#/components/responses/AuditLogsGenericErrorResponse' default: $ref: '#/components/responses/AuditLogsGenericErrorResponse' /authentication_providers: get: summary: List all SSO authentication providers deprecated: false description: Returns a list of your SSO authentication providers. operationId: FindAuthenticationProviders tags: - Authentication Providers parameters: - 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 -name:\ \ sorts the result by the\n name field in descending order.\n
  • \n

If not given, results\ \ are sorted by created_at in descending order." required: false schema: type: string enum: - name - -name - short_name - -short_name - active - -active - created_at - -created_at - updated_at - -updated_at default: -created_at example: name - 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 responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/AuthenticationProvider' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request content: application/json: schema: type: object properties: {} '401': description: Unauthorized content: application/json: schema: type: object properties: {} '404': description: Resource not found content: application/json: schema: type: object properties: {} post: summary: Creates an authentication provider deprecated: false description: Creates a new authentication provider for single sign-on, configured from the provided identity provider details, and returns the created resource. operationId: CreateAuthenticationProvider tags: - Authentication Providers parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuthenticationProviderCreate' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AuthenticationProvider' '422': description: Bad request content: application/json: schema: type: object properties: {} /authentication_providers/{id}: delete: summary: Deletes an authentication provider deprecated: false description: Deletes an existing authentication provider. operationId: DeleteAuthenticationProvider tags: - Authentication Providers parameters: - name: id in: path description: authentication provider ID required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AuthenticationProvider' '401': description: Unauthorized content: application/json: schema: type: object properties: {} '404': description: Resource not found content: application/json: schema: type: object properties: {} '422': description: Bad request content: application/json: schema: type: object properties: {} get: summary: Retrieve an authentication provider deprecated: false description: Retrieves the details of an existing authentication provider. operationId: GetAuthenticationProvider tags: - Authentication Providers parameters: - name: id in: path description: authentication provider ID required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AuthenticationProvider' '401': description: Unauthorized content: application/json: schema: type: object properties: {} '404': description: Resource not found content: application/json: schema: type: object properties: {} '422': description: Bad request content: application/json: schema: type: object properties: {} patch: summary: Update an authentication provider deprecated: false description: Updates settings of an existing authentication provider. operationId: UpdateAuthenticationProvider tags: - Authentication Providers parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAuthenticationProviderRequest' 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 responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AuthenticationProvider' '401': description: Unauthorized content: application/json: schema: type: object properties: {} '404': description: Resource not found content: application/json: schema: type: object properties: {} '422': description: Bad request content: application/json: schema: type: object properties: {} /available_phone_number_blocks: get: summary: List available phone number blocks operationId: ListAvailablePhoneNumberBlocks tags: - Phone Number Search parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[locality], filter[country_code], filter[national_destination_code], filter[phone_number_type]' schema: type: object properties: locality: type: string description: Filter phone numbers by city. country_code: type: string description: Filter phone numbers by country. national_destination_code: type: string description: Filter by the national destination code of the number. phone_number_type: type: string enum: - local - toll_free - mobile - national - shared_cost description: Filter phone numbers by number type. responses: '200': description: Successful response with a list of available phone numbers blocks. content: application/json: schema: type: object title: List Available Phone Numbers Blocks Response properties: data: type: array items: $ref: '#/components/schemas/AvailablePhoneNumberBlock' meta: $ref: '#/components/schemas/AvailablePhoneNumbersMetadata' '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: Searches the Telnyx inventory for available contiguous phone-number blocks. Results can be filtered by locality, country, national destination code, and number type. /available_phone_numbers: get: summary: List available phone numbers operationId: ListAvailablePhoneNumbers tags: - Phone Number Search x-group-parameters: 'true' x-endpoint-cost: heavy parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[locality], filter[administrative_area], filter[country_code], filter[national_destination_code], filter[rate_center], filter[phone_number_type], filter[features], filter[limit], filter[best_effort], filter[quickship], filter[reservable], filter[exclude_held_numbers]' schema: type: object properties: phone_number: type: object description: Filter phone numbers by pattern matching. properties: starts_with: type: string description: Filter numbers starting with a pattern (excludes NDC if used with `national_destination_code` filter). ends_with: type: string description: Filter numbers ending with a pattern (excludes NDC if used with `national_destination_code` filter). contains: type: string description: Filter numbers containing a pattern (excludes NDC if used with `national_destination_code` filter). additionalProperties: false locality: type: string description: Filter phone numbers by city. administrative_area: type: string description: Find numbers in a particular US state or CA province. country_code: type: string description: Filter phone numbers by country. national_destination_code: type: string description: Filter by the national destination code of the number. rate_center: type: string description: Filter phone numbers by rate center. This filter is only applicable to USA and Canada numbers. phone_number_type: type: string enum: - local - toll_free - mobile - national - shared_cost description: Filter phone numbers by number type. features: type: array items: type: string enum: - sms - mms - voice - fax - emergency - hd_voice - international_sms - local_calling description: Filter phone numbers with specific features. limit: type: integer description: Limits the number of results. best_effort: type: boolean description: Filter to determine if best effort results should be included. Only available in USA/CANADA. 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. reservable: type: boolean description: Filter to ensure only numbers that can be reserved are included in the results. exclude_held_numbers: type: boolean description: Filter to exclude phone numbers that are currently on hold/reserved for your account. responses: '200': description: Successful response with a list of available phone numbers. content: application/json: schema: type: object title: List Available Phone Numbers Response properties: data: type: array items: $ref: '#/components/schemas/AvailablePhoneNumber' meta: $ref: '#/components/schemas/AvailablePhoneNumbersMetadata' metadata: $ref: '#/components/schemas/AvailablePhoneNumbersMetadata' '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: Searches the Telnyx inventory for available phone numbers. Filters support number patterns, location, number type, features, reservability, and other inventory constraints; the response includes matching numbers and search metadata. /balance: get: summary: Get user balance details operationId: GetUserBalance tags: - Billing responses: '200': description: Get user balance details content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/UserBalance' '403': $ref: '#/components/responses/billing_ForbiddenErrorResponse' '422': $ref: '#/components/responses/billing_UnprocessableEntityErrorResponse' '503': $ref: '#/components/responses/ServiceUnavailableErrorResponse' default: $ref: '#/components/responses/billing_GenericErrorResponse' description: Retrieve the current balance, available credit, and credit limit for your account. /billing_groups: get: summary: List all billing groups deprecated: false description: Retrieve a paginated list of billing groups on your account. operationId: ListBillingGroups tags: - Billing Groups 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 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 responses: '200': description: A paginated array of billing groups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/BillingGroup' meta: $ref: '#/components/schemas/PaginationMeta' headers: {} '400': $ref: '#/components/responses/BadRequestErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a billing group deprecated: false description: Create a new billing group, which can be used to organize resources for billing purposes. operationId: CreateBillingGroup tags: - Billing Groups requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NewBillingGroup' example: name: string responses: '200': description: Expected billing group response to a valid request content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BillingGroup' headers: {} '409': $ref: '#/components/responses/ConflictErrorResponse' '422': $ref: '#/components/responses/UnprocessableEntityErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /billing_groups/{id}: delete: summary: Delete a billing group deprecated: false description: Delete a billing group from your account. operationId: DeleteBillingGroup tags: - Billing Groups parameters: - name: id in: path description: The id of the billing group required: true example: f5586561-8ff0-4291-a0ac-84fe544797bd schema: type: string format: uuid responses: '200': description: Expected billing group response to a valid request content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BillingGroup' headers: {} '403': $ref: '#/components/responses/ForbiddenErrorResponse' '404': $ref: '#/components/responses/NotFoundErrorResponse' '409': $ref: '#/components/responses/ConflictErrorResponse' '422': $ref: '#/components/responses/UnprocessableEntityErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Get a billing group deprecated: false description: Retrieve the details of a specific billing group. operationId: GetBillingGroup tags: - Billing Groups parameters: - name: id in: path description: The id of the billing group required: true example: f5586561-8ff0-4291-a0ac-84fe544797bd schema: type: string format: uuid responses: '200': description: Expected billing group response to a valid request content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BillingGroup' headers: {} '403': $ref: '#/components/responses/ForbiddenErrorResponse' '404': $ref: '#/components/responses/NotFoundErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update a billing group deprecated: false description: Update the properties of an existing billing group. operationId: UpdateBillingGroup tags: - Billing Groups parameters: - name: id in: path description: The id of the billing group required: true example: f5586561-8ff0-4291-a0ac-84fe544797bd schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateBillingGroup' example: name: string responses: '200': description: Expected billing group response to a valid request content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BillingGroup' headers: {} '403': $ref: '#/components/responses/ForbiddenErrorResponse' '404': $ref: '#/components/responses/NotFoundErrorResponse' '422': $ref: '#/components/responses/UnprocessableEntityErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /bulk_sim_card_actions: get: operationId: ListBulkSimCardActions summary: List bulk SIM card actions description: This API lists a paginated collection of bulk SIM card actions. A bulk SIM card action contains details about a collection of individual SIM card actions. tags: - SIM Card Actions parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - name: filter[action_type] description: Filter by action type. in: query required: false schema: type: string enum: - bulk_disable_voice - bulk_enable_voice - bulk_set_public_ips example: bulk_set_public_ips responses: '200': $ref: '#/components/responses/BulkSIMCardActionCollectionResponse' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /bulk_sim_card_actions/{id}: get: operationId: GetBulkSimCardAction summary: Get bulk SIM card action details description: This API fetches information about a bulk SIM card action. A bulk SIM card action contains details about a collection of individual SIM card actions. tags: - SIM Card Actions parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BulkSIMCardActionDetailed' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /bundle_pricing/billing_bundles: get: tags: - Bundles summary: Retrieve Bundles description: Returns a paginated list of the billing bundles available to your account, with support for filtering. operationId: GetUserBillingBundles parameters: - $ref: '#/components/parameters/bundle-pricing_FilterConsolidated' - $ref: '#/components/parameters/bundle-pricing_PageConsolidated' - $ref: '#/components/parameters/AuthorizationBearer' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PaginatedBillingBundlesResponse' '400': $ref: '#/components/responses/bundle-pricing_BadRequestErrorResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' /bundle_pricing/billing_bundles/{bundle_id}: get: tags: - Bundles summary: Get Bundle By Id description: Returns the details of a single billing bundle by its ID, so you can inspect its contents before purchasing a user bundle. operationId: GetBillingBundleById parameters: - $ref: '#/components/parameters/BundleId' - $ref: '#/components/parameters/AuthorizationBearer' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BillingBundleResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': $ref: '#/components/responses/bundle-pricing_NotFoundErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' /bundle_pricing/user_bundles: get: tags: - User Bundles summary: Get User Bundles operationId: GetUserBundles description: Returns a paginated list of the bundles active on your account, with support for filtering. parameters: - $ref: '#/components/parameters/bundle-pricing_FilterConsolidated' - $ref: '#/components/parameters/bundle-pricing_PageConsolidated' - $ref: '#/components/parameters/AuthorizationBearer' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PaginatedUserBundlesResponse' '400': $ref: '#/components/responses/bundle-pricing_BadRequestErrorResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' /bundle_pricing/user_bundles/bulk: post: summary: Create User Bundles description: Creates multiple user bundles for the user. operationId: CreateUserBundlesBulk parameters: - $ref: '#/components/parameters/AuthorizationBearer' tags: - User Bundles requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUserBundlesBulkRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CreatedUserBundlesResponse' '400': $ref: '#/components/responses/bundle-pricing_BadRequestErrorResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': $ref: '#/components/responses/bundle-pricing_NotFoundErrorResponse' '422': $ref: '#/components/responses/bundle-pricing_UnprocessableEntityErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' /bundle_pricing/user_bundles/unused: get: tags: - User Bundles summary: Get Unused User Bundles description: Returns all user bundles that aren't in use. operationId: GetUnusedUserBundles parameters: - $ref: '#/components/parameters/bundle-pricing_FilterConsolidated' - $ref: '#/components/parameters/AuthorizationBearer' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UnusedUserBundlesResponse' '400': $ref: '#/components/responses/bundle-pricing_BadRequestErrorResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' /bundle_pricing/user_bundles/{user_bundle_id}: delete: tags: - User Bundles summary: Deactivate User Bundle description: Deactivates the specified user bundle on your account and returns the deactivated bundle. operationId: DeactivateUserBundle parameters: - $ref: '#/components/parameters/UserBundleId' - $ref: '#/components/parameters/AuthorizationBearer' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UserBundleCreateResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': $ref: '#/components/responses/bundle-pricing_NotFoundErrorResponse' '422': $ref: '#/components/responses/bundle-pricing_UnprocessableEntityErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' get: tags: - User Bundles summary: Get User Bundle by Id description: Returns the details of a single user bundle on your account by its ID. operationId: GetUserBundleById parameters: - $ref: '#/components/parameters/UserBundleId' - $ref: '#/components/parameters/AuthorizationBearer' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UserBundleResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': $ref: '#/components/responses/bundle-pricing_NotFoundErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' /bundle_pricing/user_bundles/{user_bundle_id}/resources: get: tags: - User Bundles summary: Get User Bundle Resources description: Retrieves the resources of a user bundle by its ID. operationId: GetUserBundleResources parameters: - $ref: '#/components/parameters/UserBundleId' - $ref: '#/components/parameters/AuthorizationBearer' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UserBundleResourcesResponse' '401': $ref: '#/components/responses/UnauthorizedErrorResponse' '404': $ref: '#/components/responses/bundle-pricing_NotFoundErrorResponse' default: $ref: '#/components/responses/bundle-pricing_GenericErrorResponse' /call_control_applications: get: description: Return a list of call control applications. summary: List call control applications operationId: ListCallControlApplications tags: - Call Control Applications x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/call-control_FilterConsolidated' - $ref: '#/components/parameters/call-control_PageConsolidated' - $ref: '#/components/parameters/SortConnection' responses: '200': description: Successful response with a list of call control applications. content: application/json: schema: type: object title: List Call Control Applications Response properties: data: type: array items: $ref: '#/components/schemas/CallControlApplication' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request '401': $ref: '#/components/responses/UnauthorizedResponse' '404': description: Resource not found post: summary: Create a call control application description: Creates a call control application, which defines the webhook endpoints and settings used to control calls on associated connections. operationId: CreateCallControlApplication tags: - Call Control Applications x-endpoint-cost: medium requestBody: description: Create call control application request. required: true content: application/json: schema: $ref: '#/components/schemas/CreateCallControlApplicationRequest' responses: '201': description: Successful response with details about a call control application. content: application/json: schema: type: object title: Call Control Application Response properties: data: $ref: '#/components/schemas/CallControlApplication' '422': description: Bad Request /call_control_applications/{id}: delete: description: Permanently deletes the specified call control application and its webhook configuration. summary: Delete a call control application operationId: DeleteCallControlApplication tags: - Call Control Applications parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string example: '1293384261075731499' x-format: int64 responses: '200': description: Successful response with details about a call control application. content: application/json: schema: type: object title: Call Control Application Response properties: data: $ref: '#/components/schemas/CallControlApplication' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': description: Resource not found '422': description: Bad request get: description: Retrieves the details of an existing call control application. summary: Retrieve a call control application operationId: RetrieveCallControlApplication tags: - Call Control Applications parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string example: '1293384261075731499' x-format: int64 responses: '200': description: Successful response with details about a call control application. content: application/json: schema: type: object title: Call Control Application Response properties: data: $ref: '#/components/schemas/CallControlApplication' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': description: Resource not found '422': description: Bad request patch: summary: Update a call control application description: Updates settings of an existing call control application. operationId: UpdateCallControlApplication tags: - Call Control Applications parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string example: '1293384261075731499' x-format: int64 requestBody: description: Update call control application request. required: true content: application/json: schema: $ref: '#/components/schemas/UpdateCallControlApplicationRequest' responses: '200': description: Successful response with details about a call control application. content: application/json: schema: type: object title: Call Control Application Response properties: data: $ref: '#/components/schemas/CallControlApplication' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': description: Resource not found '409': description: Conflict. Another update to this application 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: Bad request /call_events: get: summary: List call events description: 'Filters call events by given filter parameters. Events are ordered by `occurred_at`. If filter for `leg_id` or `application_session_id` is not present, it only filters events from the last 24 hours. **Note**: Only one `filter[occurred_at]` can be passed. ' x-latency-category: responsive x-group-parameters: 'true' operationId: ListCallEvents tags: - Debugging parameters: - $ref: '#/components/parameters/call-control_FilterConsolidated' - $ref: '#/components/parameters/call-control_PageConsolidated' responses: '200': description: Successful response with a list of call events. content: application/json: schema: type: object title: List Call Events Response properties: data: type: array items: $ref: '#/components/schemas/CallEvent' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /call_reasons: get: summary: List standard call reasons description: Telnyx maintains a library of pre-vetted call-reason phrases (e.g. "Appointment reminders", "Billing inquiries") that carry through DIR vetting smoothly. You can use any string that fits your use case in `DirCreateRequest.call_reasons`, but matching one of these reduces the chance the vetting team flags the phrasing for clarification. operationId: listCallReasons tags: - Reference Data parameters: - $ref: '#/components/parameters/BcPageNumber' - name: page[size] in: query required: false description: Items per page. Default `100` for this endpoint (the call-reason library is small and most callers want the whole list in one call). Maximum 250; values above are clamped to 250. schema: type: integer minimum: 1 maximum: 250 default: 100 example: 100 responses: '200': description: Paginated list of standard call reasons. content: application/json: schema: $ref: '#/components/schemas/CallReasonReferenceList' example: data: - id: d29914a4-3c93-440c-af72-03778f442522 reason: Account Alert description: Alert about account status or changes - id: 4cabcae2-6c61-415b-ac5b-753469458a56 reason: Account Notification description: General account notifications meta: page_number: 1 page_size: 2 total_results: 45 total_pages: 23 default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /call_reasons/validate: post: summary: Validate a list of call reasons description: Check up to 10 candidate `call_reasons` strings against Telnyx's vetting heuristics before sending them on a DIR create or update. The endpoint flags strings that are likely to be rejected during vetting (too generic, banned phrases, length issues, etc.) so you can fix them up front. operationId: validateCallReasons tags: - Reference Data requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ValidateCallReasonsRequest' example: - Appointment reminders - Billing inquiries responses: '200': description: Per-string validation result. content: application/json: schema: $ref: '#/components/schemas/ValidateCallReasonsResponse' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /calls: post: summary: Dial description: 'Dial a number or SIP URI from a given connection. A successful response will include a `call_leg_id` which can be used to correlate the command with subsequent webhooks. To place the call with an AI assistant from the start, include `assistant.id` and any per-call overrides in the `assistant` object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers. **Expected Webhooks:** - `call.initiated` - `call.answered` or `call.hangup` - `call.conversation.created` when the requested assistant conversation is created, or `call.conversation.start_failed` when it could not be started after the called party answered - `call.hold` and `call.unhold` if the call is held/unheld - `call.machine.detection.ended` if `answering_machine_detection` was requested - `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting - `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested - `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected - `call.machine.premium.call_screening.detected` if `answering_machine_detection=premium_ios_call_screening_detection` was requested and an Apple Call Screening tone was detected - `call.deepfake_detection.result` if `deepfake_detection` was enabled - `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred - `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set When the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field. ' operationId: DialCall tags: - Call Commands requestBody: description: Call request required: true content: application/json: schema: $ref: '#/components/schemas/CallRequest' responses: '200': description: Successful response with details about a call status that includes recording_id. content: application/json: schema: type: object title: Retrieve Call Status Response With Recording ID properties: data: $ref: '#/components/schemas/CallWithRecordingId' '400': $ref: '#/components/responses/BadRequestResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' '500': $ref: '#/components/responses/InternalServerErrorResponse' '503': $ref: '#/components/responses/ServiceUnavailableResponse' '429': $ref: '#/components/responses/TooManyRequestsResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}: get: summary: Retrieve a call status description: Returns the status of a call (data is available 10 minutes after call ended). operationId: RetrieveCallStatus tags: - Call Information parameters: - $ref: '#/components/parameters/CallControlId' responses: '200': description: Successful response with details about a call status. content: application/json: schema: type: object title: Retrieve Call Status Response properties: data: $ref: '#/components/schemas/Call' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/ai_assistant_add_messages: post: summary: Add messages to AI Assistant description: Add messages to the conversation started by an AI assistant on the call. operationId: CallAddMessagesToAIAssistant tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: AI Assistant add messages request required: true content: application/json: schema: $ref: '#/components/schemas/AIAssistantAddMessagesRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' default: $ref: '#/components/responses/call-control_GenericErrorResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /calls/{call_control_id}/actions/ai_assistant_join: post: summary: Join AI Assistant Conversation description: Add a participant to an existing AI assistant conversation. Use this command to bring an additional call leg into a running AI conversation. operationId: CallJoinAIAssistant tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: AI Assistant Join request required: true content: application/json: schema: $ref: '#/components/schemas/AIAssistantJoinRequest' responses: '200': description: Successful response upon making a call control command that includes conversation_id. content: application/json: schema: type: object title: Call Control Command Response With Conversation ID properties: data: $ref: '#/components/schemas/CallControlCommandResultWithConversationId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/ai_assistant_start: post: summary: Start AI Assistant description: 'Start an AI assistant on the call. **Expected Webhooks:** - [`call.conversation.created`](/api-reference/callbacks/call-conversation-created) includes `conversation_id` during startup - `call.conversation.ended` - `call.conversation_insights.generated` ' operationId: CallStartAIAssistant tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: AI Assistant request required: true content: application/json: schema: $ref: '#/components/schemas/AIAssistantStartRequest' responses: '200': description: Successful response upon making a call control command that includes conversation_id. content: application/json: schema: type: object title: Call Control Command Response With Conversation ID properties: data: $ref: '#/components/schemas/CallControlCommandResultWithConversationId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/ai_assistant_stop: post: summary: Stop AI Assistant description: Stops the AI assistant currently engaged on the call. The call remains active and can continue with other call control commands. operationId: CallStopAIAssistant tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: AI Assistant request required: true content: application/json: schema: $ref: '#/components/schemas/AIAssistantStopRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/answer: post: summary: Answer call description: 'Answer an incoming call. You must issue this command before executing subsequent commands on an incoming call. To answer with an AI assistant, include `assistant.id` and any per-call overrides in the `assistant` object. Telnyx attempts to warm up the assistant before answering the call, then starts the assistant automatically when the call is answered. Do not also send `ai_assistant_start` for this flow. The HTTP success response can arrive before the call is answered; use the `call.answered` webhook to track the answer. If warm-up fails, Telnyx falls back to starting the assistant after answering. When `assistant.id` is supplied, obtain the conversation ID from `data.payload.conversation_id` in the [call.conversation.created](/api-reference/callbacks/call-conversation-created) webhook and correlate it using `data.payload.call_control_id`. The `answer` HTTP response does not include `conversation_id`. The created event is emitted during assistant startup and does not indicate that the assistant is ready to speak. Set the assistant voice with `assistant.voice_settings.voice` and speech-to-text settings with `assistant.transcription`. You can reuse one stored assistant with different per-call settings. Warm-up prepares assistant configuration and dependencies; it does not wait for the greeting audio to be ready or guarantee zero silence after answer. A plain `answer` followed by `ai_assistant_start` performs assistant startup after the call has already been answered. **Expected Webhooks:** - `call.answered` - `call.conversation.created` when the requested assistant conversation is created - `call.hold` and `call.unhold` if the call is held/unheld - `call.deepfake_detection.result` if `deepfake_detection` was enabled - `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred - `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set When the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field. ' operationId: AnswerCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Answer call request required: true content: application/json: schema: $ref: '#/components/schemas/AnswerRequest' responses: '200': description: Successful response upon making a call control command that includes recording_id. content: application/json: schema: type: object title: Call Control Command Response With Recording ID properties: data: $ref: '#/components/schemas/CallControlCommandResultWithRecordingId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/bridge: post: summary: Bridge calls description: 'Bridge two call control calls. **Expected Webhooks:** - `call.bridged` for Leg A - `call.bridged` for Leg B ' operationId: BridgeCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Bridge call request required: true content: application/json: schema: $ref: '#/components/schemas/BridgeRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/client_state_update: put: summary: Update client state description: Updates the client state associated with the call. Client state is an opaque value echoed back in subsequent webhooks for the call, letting you correlate events with your application's state. operationId: UpdateClientState tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Updates client state for every subsequent webhook required: true content: application/json: schema: $ref: '#/components/schemas/ClientStateUpdateRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/conversation_relay_start: post: summary: Start Conversation Relay description: 'Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time. **Expected Webhooks:** - `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`. ' operationId: CallStartConversationRelay tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Conversation Relay start request required: true content: application/json: schema: $ref: '#/components/schemas/ConversationRelayStartRequest' responses: '200': description: Successful response upon starting Conversation Relay. content: application/json: schema: type: object title: Call Control Command Response With Conversation Relay ID properties: data: $ref: '#/components/schemas/CallControlCommandResultWithConversationRelayId' default: $ref: '#/components/responses/call-control_GenericErrorResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /calls/{call_control_id}/actions/conversation_relay_stop: post: summary: Stop Conversation Relay description: Stop the active Conversation Relay session on a call. operationId: CallStopConversationRelay tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Conversation Relay stop request required: true content: application/json: schema: $ref: '#/components/schemas/ConversationRelayStopRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' default: $ref: '#/components/responses/call-control_GenericErrorResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /calls/{call_control_id}/actions/enqueue: post: summary: Enqueue call description: Places the call into a queue, where it waits until it is removed or bridged to another leg. Queue behavior is configured through the request body. operationId: EnqueueCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Enqueue call request required: true content: application/json: schema: $ref: '#/components/schemas/EnqueueRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/fork_start: post: summary: Forking start description: "Call forking allows you to stream the media from a call to a specific target in realtime. \nThis stream\ \ can be used to enable realtime audio analysis to support a \nvariety of use cases, including fraud detection, or\ \ the creation of AI-generated audio responses. \nRequests must specify either the `target` attribute or the `rx`\ \ and `tx` attributes.\n\n**Expected Webhooks:**\n\n- `call.fork.started`\n- `call.fork.stopped`\n\n" operationId: StartCallFork tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Fork media request required: true content: application/json: schema: $ref: '#/components/schemas/StartForkingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/fork_stop: post: summary: Forking stop description: 'Stop forking a call. **Expected Webhooks:** - `call.fork.stopped` ' operationId: StopCallFork tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Stop forking media request required: true content: application/json: schema: $ref: '#/components/schemas/StopForkingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/gather: post: summary: Gather description: 'Gather DTMF signals to build interactive menus. You can pass a list of valid digits. The `Answer` command must be issued before the `gather` command. **Expected Webhooks:** - `call.dtmf.received` (you may receive many of these webhooks) - `call.gather.ended` ' operationId: GatherCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Gather required: true content: application/json: schema: $ref: '#/components/schemas/GatherRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/gather_stop: post: summary: Gather stop description: 'Stop current gather. **Expected Webhooks:** - `call.gather.ended` ' operationId: StopCallGather tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Stop current gather required: true content: application/json: schema: $ref: '#/components/schemas/StopGatherRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/gather_using_ai: post: summary: Gather using AI description: "Gather parameters defined in the request payload using a voice assistant.\n\n You can pass parameters\ \ described as a JSON Schema object and the voice assistant will attempt to gather these informations. \n\n**Expected\ \ Webhooks:**\n\n- [`call.conversation.created`](/api-reference/callbacks/call-conversation-created) includes `conversation_id`\ \ during startup\n- `call.ai_gather.ended`\n- `call.conversation.ended`\n- `call.ai_gather.partial_results` (if `send_partial_results`\ \ is set to `true`)\n- `call.ai_gather.message_history_updated` (if `send_message_history_updates` is set to `true`)\n" operationId: callGatherUsingAI tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Gather using AI request required: true content: application/json: schema: $ref: '#/components/schemas/GatherUsingAIRequest' responses: '200': description: Successful response upon making a call control command that includes conversation_id. content: application/json: schema: type: object title: Call Control Command Response With Conversation ID properties: data: $ref: '#/components/schemas/CallControlCommandResultWithConversationId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/gather_using_audio: post: summary: Gather using audio description: 'Play an audio file on the call until the required DTMF signals are gathered to build interactive menus. You can pass a list of valid digits along with an ''invalid_audio_url'', which will be played back at the beginning of each prompt. Playback will be interrupted when a DTMF signal is received. The `Answer command must be issued before the `gather_using_audio` command. **Expected Webhooks:** - `call.playback.started` - `call.playback.ended` - `call.dtmf.received` (you may receive many of these webhooks) - `call.gather.ended` ' operationId: GatherUsingAudio tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Gather using audio request required: true content: application/json: schema: $ref: '#/components/schemas/GatherUsingAudioRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/gather_using_speak: post: summary: Gather using speak description: 'Convert text to speech and play it on the call until the required DTMF signals are gathered to build interactive menus. You can pass a list of valid digits along with an ''invalid_payload'', which will be played back at the beginning of each prompt. Speech will be interrupted when a DTMF signal is received. The `Answer` command must be issued before the `gather_using_speak` command. **Expected Webhooks:** - `call.dtmf.received` (you may receive many of these webhooks) - `call.gather.ended` ' operationId: GatherUsingSpeak tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Gather using speak request required: true content: application/json: schema: $ref: '#/components/schemas/GatherUsingSpeakRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/hangup: post: summary: Hangup call description: 'Hang up the call. **Expected Webhooks:** - `call.hangup` - `call.recording.saved` ' operationId: HangupCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Hangup request required: true content: application/json: schema: $ref: '#/components/schemas/HangupRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/leave_queue: post: summary: Remove call from a queue description: Removes the call from the queue it is currently waiting in. The call remains active and can be directed with further call commands. operationId: LeaveQueue tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Removes the call from the queue, the call currently is enqueued in. required: true content: application/json: schema: $ref: '#/components/schemas/LeaveQueueRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/pay: post: summary: Process a payment description: 'Collect payment details from the caller using DTMF and either charge or tokenize the payment method through a configured Pay connector. Pay pauses active call recordings while sensitive payment details are collected. When `payment_token` is supplied, the DTMF collection steps are skipped and the existing token is sent to the connector. **Expected Webhooks:** - `call.payment.progress` - `call.payment.completed` **Test mode card numbers:** `4111111111111111` (Visa), `5555555555554444` (Mastercard), `378282246310005` (American Express), `6011111111111117` (Discover), `3065930009020004` (Diners Club), `3566002020360505` (JCB), `6200000000000005` (UnionPay), and `6771798021000008` (Maestro). Test-mode connectors reject other card numbers before contacting the configured processor. The UnionPay and Maestro numbers are accepted for processor testing, but Pay currently does not emit a card type for them.' operationId: PayCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Pay request required: true content: application/json: schema: $ref: '#/components/schemas/PayRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/playback_start: post: summary: Play audio URL description: 'Play an audio file on the call. If multiple play audio commands are issued consecutively, the audio files will be placed in a queue awaiting playback. *Notes:* - When `overlay` is enabled, `target_legs` is limited to `self`. - A customer cannot Play Audio with `overlay=true` unless there is a Play Audio with `overlay=false` actively playing. **Expected Webhooks:** - `call.playback.started` - `call.playback.ended` ' operationId: StartCallPlayback tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Play audio URL request required: true content: application/json: schema: $ref: '#/components/schemas/PlayAudioUrlRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/playback_stop: post: summary: Stop audio playback description: 'Stop audio being played on the call. **Expected Webhooks:** - `call.playback.ended` or `call.speak.ended` ' operationId: StopCallPlayback tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Stop audio playback request required: true content: application/json: schema: $ref: '#/components/schemas/PlaybackStopRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/record_pause: post: summary: Record pause description: 'Pause recording the call. Recording can be resumed via Resume recording command. **Expected Webhooks:** There are no webhooks associated with this command. ' operationId: PauseCallRecording tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Pause recording call request required: true content: application/json: schema: $ref: '#/components/schemas/PauseRecordingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/record_resume: post: summary: Record resume description: 'Resume recording the call. **Expected Webhooks:** There are no webhooks associated with this command. ' operationId: ResumeCallRecording tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Resume recording call request required: true content: application/json: schema: $ref: '#/components/schemas/ResumeRecordingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/record_start: post: summary: Recording start description: 'Start recording the call. Recording will stop on call hang-up, or can be initiated via the Stop Recording command. **Expected Webhooks:** - `call.recording.saved` - `call.recording.transcription.saved` - `call.recording.error` ' operationId: StartCallRecord tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Start recording audio request required: true content: application/json: schema: $ref: '#/components/schemas/StartRecordingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' '503': $ref: '#/components/responses/RecordingStartUnavailableResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/record_stop: post: summary: Recording stop description: 'Stop recording the call. **Expected Webhooks:** - `call.recording.saved` ' operationId: StopCallRecording tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Stop recording call request required: true content: application/json: schema: $ref: '#/components/schemas/StopRecordingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/refer: post: summary: SIP Refer a call description: 'Initiate a SIP Refer on a Call Control call. You can initiate a SIP Refer at any point in the duration of a call. **Expected Webhooks:** - `call.refer.started` - `call.refer.completed` - `call.refer.failed` ' operationId: ReferCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Refer request required: true content: application/json: schema: $ref: '#/components/schemas/ReferRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/reject: post: summary: Reject a call description: 'Reject an incoming call. **Expected Webhooks:** - `call.hangup` ' operationId: RejectCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Reject request required: true content: application/json: schema: $ref: '#/components/schemas/RejectRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/send_dtmf: post: summary: Send DTMF description: 'Sends DTMF tones from this leg. DTMF tones will be heard by the other end of the call. **Expected Webhooks:** There are no webhooks associated with this command. ' operationId: SendDTMF tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Send DTMF request required: true content: application/json: schema: $ref: '#/components/schemas/SendDTMFRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/send_sip_info: post: summary: Send SIP info description: 'Sends SIP info from this leg. **Expected Webhooks:** - `call.sip_info.received` (to be received on the target call leg) ' operationId: SendSIPInfo tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Send SIP INFO request required: true content: application/json: schema: $ref: '#/components/schemas/SendSIPInfoRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/siprec_start: post: summary: SIPREC start description: "Start siprec session to configured in SIPREC connector SRS. \n\n**Expected Webhooks:**\n\n- `siprec.started`\n\ - `siprec.stopped`\n- `siprec.failed`\n" operationId: StartSiprecSession tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Start siprec session to configured in SIPREC connector SRS. required: true content: application/json: schema: $ref: '#/components/schemas/StartSiprecRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/siprec_stop: post: summary: SIPREC stop description: 'Stop SIPREC session. **Expected Webhooks:** - `siprec.stopped` ' operationId: StopSiprecSession tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Stop siprec session required: true content: application/json: schema: $ref: '#/components/schemas/StopSiprecRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/speak: post: summary: Speak text description: 'Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback. **Expected Webhooks:** - `call.speak.started` - `call.speak.ended` ' operationId: SpeakCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Speak request required: true content: application/json: schema: $ref: '#/components/schemas/SpeakRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/streaming_start: post: summary: Streaming start description: 'Start streaming the media from a call to a specific WebSocket address or Dialogflow connection in near-realtime. Audio will be delivered as base64-encoded RTP payload (raw audio), wrapped in JSON payloads. Please find more details about media streaming messages specification under the [link](https://developers.telnyx.com/docs/voice/programmable-voice/media-streaming).' operationId: StartCallStreaming tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Start streaming media request required: true content: application/json: schema: $ref: '#/components/schemas/StartStreamingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/streaming_stop: post: summary: Streaming stop description: 'Stop streaming a call to a WebSocket. **Expected Webhooks:** - `streaming.stopped` ' operationId: StopCallStreaming tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Stop streaming media request required: true content: application/json: schema: $ref: '#/components/schemas/StopStreamingRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/suppression_start: post: operationId: noiseSuppressionStart parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/NoiseSuppressionStart' description: Start noise suppression request required: true responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Noise Suppression Start (BETA) tags: - Call Commands x-latency-category: interactive description: Start noise suppression on an active call to reduce background noise. This feature is currently in beta. /calls/{call_control_id}/actions/suppression_stop: post: operationId: noiseSuppressionStop parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/NoiseSuppressionStop' description: Stop noise suppression request required: true responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Noise Suppression Stop (BETA) tags: - Call Commands x-latency-category: interactive description: Stop noise suppression previously started on an active call. This feature is currently in beta. /calls/{call_control_id}/actions/switch_supervisor_role: post: summary: Switch supervisor role description: Switch the supervisor role for a bridged call. This allows switching between different supervisor modes during an active call operationId: SwitchSupervisorRole tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Switch supervisor role request required: true content: application/json: schema: $ref: '#/components/schemas/SwitchSupervisorRoleRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/transcription_start: post: summary: Transcription start description: 'Start real-time transcription. Transcription will stop on call hang-up, or can be initiated via the Transcription stop command. **Expected Webhooks:** - `call.transcription` ' operationId: StartCallTranscription tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Transcription start request required: true content: application/json: schema: $ref: '#/components/schemas/TranscriptionStartRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/transcription_stop: post: summary: Transcription stop description: Stops real-time transcription on the call. Transcription webhooks cease once the command takes effect; the call itself is unaffected. operationId: StopCallTranscription tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Transcription stop request required: true content: application/json: schema: $ref: '#/components/schemas/TranscriptionStopRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /calls/{call_control_id}/actions/transfer: post: summary: Transfer call description: 'Transfer a call to a new destination. If the transfer is unsuccessful, a `call.hangup` webhook for the other call (Leg B) will be sent indicating that the transfer could not be completed. The original call will remain active and may be issued additional commands, potentially transfering the call to an alternate destination. **Expected Webhooks:** - `call.initiated` - `call.bridged` to Leg B - `call.answered` or `call.hangup` - `call.machine.detection.ended` if `answering_machine_detection` was requested - `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting - `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested - `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected - `call.machine.premium.call_screening.detected` if `answering_machine_detection=premium_ios_call_screening_detection` was requested and an Apple Call Screening tone was detected ' operationId: TransferCall tags: - Call Commands parameters: - $ref: '#/components/parameters/CallControlId' requestBody: description: Transfer call request required: true content: application/json: schema: $ref: '#/components/schemas/TransferCallRequest' responses: '200': description: Successful response upon making a call control command. content: application/json: schema: type: object title: Call Control Command Response properties: data: $ref: '#/components/schemas/CallControlCommandResult' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /channel_zones: get: summary: List your voice channels for non-US zones description: Returns the non-US voice channels for your account. voice channels allow you to use Channel Billing for calls to your Telnyx phone numbers. Please check the Telnyx Support Articles section for full information and examples of how to utilize Channel Billing. operationId: GetChannelZones tags: - Voice Channels parameters: - $ref: '#/components/parameters/voice-channels_PageConsolidated' responses: '200': $ref: '#/components/responses/GetGcbChannelZonesRequestResponse' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found /channel_zones/{channel_zone_id}: parameters: - $ref: '#/components/parameters/GcbChannelZoneId' put: summary: Update voice channels for non-US Zones description: Update the number of Voice Channels for the Non-US Zones. This allows your account to handle multiple simultaneous inbound calls to Non-US numbers. Use this endpoint to increase or decrease your capacity based on expected call volume. operationId: PatchChannelZone tags: - Voice Channels requestBody: description: Quantity of reserved channels and organizational update option content: application/json: schema: type: object properties: channels: type: integer format: int64 description: The number of reserved channels required: - channels example: channels: 0 required: true responses: '200': description: Successfuly patched channel zone content: application/json: schema: $ref: '#/components/schemas/GcbChannelZone' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found default: $ref: '#/components/responses/voice-channels_GenericErrorResponse' x-codegen-request-body-name: body /charges_breakdown: get: summary: Get monthly charges breakdown operationId: GetMonthlyChargesBreakdown description: Retrieve a detailed breakdown of monthly charges for phone numbers in a specified date range. The date range cannot exceed 31 days. parameters: - name: start_date in: query description: Start date for the charges breakdown in ISO date format (YYYY-MM-DD) required: true schema: type: string format: date example: '2025-05-01' - name: end_date in: query description: End date for the charges breakdown in ISO date format (YYYY-MM-DD). If not provided, defaults to start_date + 1 month. The date is exclusive, data for the end_date itself is not included in the report. The interval between start_date and end_date cannot exceed 31 days. required: false schema: type: string format: date example: '2025-06-01' - name: format in: query description: Response format required: false schema: type: string enum: - json - csv default: json example: json responses: '200': description: Monthly charges breakdown content: application/json: schema: $ref: '#/components/schemas/MonthlyChargesBreakdownResponse' text/csv: schema: type: string description: CSV format of the charges breakdown '400': $ref: '#/components/responses/charges_BadRequestErrorResponse' '422': $ref: '#/components/responses/charges_UnprocessableEntityErrorResponse' default: $ref: '#/components/responses/charges_GenericErrorResponse' /charges_summary: get: summary: Get monthly charges summary operationId: GetMonthlyChargesSummary description: Retrieve a summary of monthly charges for a specified date range. The date range cannot exceed 31 days. parameters: - name: start_date in: query description: Start date for the charges summary in ISO date format (YYYY-MM-DD) required: true schema: type: string format: date example: '2025-05-01' - name: end_date in: query description: End date for the charges summary in ISO date format (YYYY-MM-DD). The date is exclusive, data for the end_date itself is not included in the report. The interval between start_date and end_date cannot exceed 31 days. required: true schema: type: string format: date example: '2025-06-01' responses: '200': description: Monthly charges summary content: application/json: schema: $ref: '#/components/schemas/MonthlyChargesSummaryResponse' '400': $ref: '#/components/responses/charges_BadRequestErrorResponse' '422': $ref: '#/components/responses/charges_UnprocessableEntityErrorResponse' default: $ref: '#/components/responses/charges_GenericErrorResponse' /comments: get: summary: Retrieve all comments operationId: ListComments tags: - Phone Number Orders parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[comment_record_type], filter[comment_record_id]' schema: type: object properties: comment_record_type: type: string example: sub_number_order enum: - sub_number_order - requirement_group description: Record type that the comment relates to comment_record_id: type: string example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 description: ID of the record the comments relate to responses: '200': description: An array of Comment Responses content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Comment' 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 comments associated with number-order records. Results can be filtered by record type and record ID and include pagination metadata. post: summary: Create a comment operationId: CreateComment tags: - Phone Number Orders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Comment' responses: '200': description: A Comment Response content: application/json: schema: type: object properties: data: allOf: - $ref: '#/components/schemas/Comment' - type: object '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: Creates a comment associated with a supported number-order record. The response contains the created comment. /comments/{id}: get: summary: Retrieve a comment operationId: RetrieveComment tags: - Phone Number Orders parameters: - name: id in: path description: The comment ID. required: true schema: type: string responses: '200': description: A Comment Response content: application/json: schema: type: object properties: data: allOf: - $ref: '#/components/schemas/Comment' - type: object '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 comment identified by `id`, including its associated record and comment metadata. /comments/{id}/read: patch: summary: Mark a comment as read operationId: MarkCommentRead tags: - Phone Number Orders parameters: - name: id in: path description: The comment ID. required: true schema: type: string responses: '200': description: A Comment Response content: application/json: schema: type: object properties: data: allOf: - $ref: '#/components/schemas/ReadComment' - type: object '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: Marks the specified comment as read. The response contains the updated read state for the comment. /compute/funcs/{id}/logs: get: operationId: GetComputeFunctionLogs summary: Get function logs description: Returns logs oldest first. `type=runtime` (default) returns function stdout/stderr. `type=invocations` returns one platform-generated record per HTTP request served. tags: - functions parameters: - name: id in: path required: true description: Function ID schema: type: string - name: type in: query required: false description: Log stream to return. schema: type: string enum: - runtime - invocations default: runtime - name: start_time in: query required: false description: Return records at or after this RFC 3339 timestamp. schema: type: string format: date-time - name: end_time in: query required: false description: Return records at or before this RFC 3339 timestamp. schema: type: string format: date-time - name: limit in: query required: false description: Maximum records to return. schema: type: integer minimum: 1 maximum: 250 responses: '200': description: Logs retrieved successfully content: application/json: schema: oneOf: - $ref: '#/components/schemas/FuncRuntimeLogsResponse' - $ref: '#/components/schemas/FuncInvocationLogsResponse' examples: runtime: value: meta: has_more: false partial: false data: - record_type: compute_func_runtime_log timestamp: '2026-09-09T16:00:00.000Z' level: log message: Hello from Edge Compute! invocations: value: meta: has_more: false partial: false data: - record_type: compute_func_invocation_log timestamp: '2026-09-09T16:00:01.000Z' method: GET path: /health status_code: 200 duration_ms: 2.276 request_size_bytes: 0 response_size_bytes: 19 region: us-east-1 '400': description: Invalid query parameter content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: Function not found content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Invalid function ID content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Errors' /compute/funcs/{id}/logs/export: delete: operationId: DeleteComputeFunctionLogExport summary: Delete log export configuration description: 'Stops exporting a function''s logs and removes its destination configuration. Idempotent: deleting when nothing is configured succeeds.' tags: - functions parameters: - name: id in: path required: true description: Function ID schema: type: string responses: '204': description: Log export configuration deleted, or none was configured (idempotent). No content is returned. '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10020' title: Unprocessable entity detail: Request could not be processed. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10001' title: Unauthorized detail: Invalid or missing API key. '404': description: Function not found content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. '422': description: Invalid function ID content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10020' title: Unprocessable entity detail: Request could not be processed. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10010' title: Internal server error detail: An unexpected error occurred. get: operationId: GetComputeFunctionLogExport summary: Get log export configuration description: Returns the function's configured log export destination and which log types are exported. Headers are never returned. Returns 404 (error code 10005) when no destination is configured for the function. tags: - functions parameters: - name: id in: path required: true description: Function ID schema: type: string responses: '200': description: Log export configuration retrieved successfully content: application/json: schema: $ref: '#/components/schemas/FuncLogExportConfigResponse' examples: configured: value: data: record_type: compute_func_log_export_config id: cfg-1 func_id: 6b7e8f9a-1c2d-3e4f-5a6b-7c8d9e0f1a2b endpoint: https://api.honeycomb.io/v1/logs enabled: true runtime_export_enabled: true invocation_export_enabled: true created_at: '2026-09-18T14:30:00.000Z' updated_at: '2026-09-21T18:00:00.000Z' '400': description: Invalid query parameter content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10020' title: Unprocessable entity detail: Request could not be processed. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10001' title: Unauthorized detail: Invalid or missing API key. '404': description: Function not found, or no log export destination configured for this function (both return error code 10005) content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. '422': description: Invalid function ID content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10020' title: Unprocessable entity detail: Request could not be processed. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10010' title: Internal server error detail: An unexpected error occurred. put: operationId: SetComputeFunctionLogExport summary: Configure log export destination description: 'Configures the external OTLP endpoint a function''s runtime and/or invocation logs are pushed to as they happen. This operation is a **full replace, not a patch**: `endpoint`, `headers`, `runtime_export_enabled`, and `invocation_export_enabled` are all required on every call — omitting any of them is a 422, not "keep the current value". Headers are encrypted at rest and never returned in any response. The endpoint must be an HTTPS URL. When export is configured, new log records are converted to OTLP log records and delivered continuously; export never bypasses platform log storage, and delivery retries with a bounded policy while the destination is unreachable. Only logs generated after configuration are exported — there is no historical replay.' tags: - functions parameters: - name: id in: path required: true description: Function ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FuncLogExportConfigSetRequest' examples: honeycomb: summary: Export both log types to Honeycomb value: endpoint: https://api.honeycomb.io/v1/logs headers: x-honeycomb-team: abc123 runtime_export_enabled: true invocation_export_enabled: true invocations_only: summary: Export invocation records only value: endpoint: https://collector.example.com/v1/logs headers: {} runtime_export_enabled: false invocation_export_enabled: true responses: '200': description: Log export configuration replaced successfully content: application/json: schema: $ref: '#/components/schemas/FuncLogExportConfigResponse' examples: replaced: value: data: record_type: compute_func_log_export_config id: cfg-1 func_id: 6b7e8f9a-1c2d-3e4f-5a6b-7c8d9e0f1a2b endpoint: https://api.honeycomb.io/v1/logs enabled: true runtime_export_enabled: true invocation_export_enabled: true created_at: '2026-09-18T14:30:00.000Z' updated_at: '2026-09-21T18:00:00.000Z' '201': description: Log export configuration created content: application/json: schema: $ref: '#/components/schemas/FuncLogExportConfigResponse' examples: created: value: data: record_type: compute_func_log_export_config id: cfg-1 func_id: 6b7e8f9a-1c2d-3e4f-5a6b-7c8d9e0f1a2b endpoint: https://api.honeycomb.io/v1/logs enabled: true runtime_export_enabled: true invocation_export_enabled: true created_at: '2026-09-21T18:00:00.000Z' updated_at: '2026-09-21T18:00:00.000Z' '400': description: Invalid request body content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10020' title: Unprocessable entity detail: Request could not be processed. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10001' title: Unauthorized detail: Invalid or missing API key. '404': description: Function not found content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. '422': description: Invalid function ID, or a required request field was omitted (full replace — no partial updates) content: application/json: schema: $ref: '#/components/schemas/Errors' examples: missing_required_field: value: errors: - code: '10020' title: Unprocessable entity detail: 'Request could not be processed: this endpoint is a full replace — endpoint, headers, runtime_export_enabled, and invocation_export_enabled are all required on every call.' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Errors' examples: error: value: errors: - code: '10010' title: Internal server error detail: An unexpected error occurred. /compute/funcs/{id}/metric_aggregates: get: operationId: GetComputeFunctionMetricAggregates summary: Get function metric aggregates description: Returns aggregate request, latency, CPU, memory, and resource-limit metrics for a function over the requested window. tags: - functions parameters: - name: id in: path required: true description: Function ID schema: type: string - name: start_time in: query required: true description: Inclusive window start, UTC ISO 8601 with milliseconds schema: type: string format: date-time - name: end_time in: query required: true description: Exclusive window end, UTC ISO 8601 with milliseconds schema: type: string format: date-time - name: filter[edge_site] in: query required: false description: Edge site filter schema: type: string - name: filter[namespace] in: query required: false description: Kubernetes namespace filter schema: type: string - name: page[number] in: query required: false schema: type: integer default: 1 - name: page[size] in: query required: false schema: type: integer minimum: 1 maximum: 250 default: 20 responses: '200': description: Metric aggregates retrieved successfully content: application/json: schema: $ref: '#/components/schemas/FunctionMetricAggregateListResponse' example: meta: total_pages: 1 total_results: 1 page_number: 1 page_size: 20 data: - record_type: edge_compute_function_metric_aggregate product: edge_compute start_time: '2026-09-08T16:00:00.000Z' end_time: '2026-09-09T16:00:00.000Z' function_id: 01998f0a-1111-7777-8888-123456789abc function_name: my-func request_count: 1250 request_success_rate: 0.982 request_client_error_rate: 0.012 request_error_rate: 0.006 request_latency_p50_ms: 8.4 request_latency_p95_ms: 21.7 request_latency_p99_ms: 44.2 request_latency_avg_ms: 10.1 cpu_used_cores_avg: 0.03 cpu_used_cores_max: 0.18 memory_used_bytes_avg: 67108864 memory_used_bytes_max: 94371840 '401': description: Unauthorized '404': description: Function not found '422': description: Invalid function ID or query parameter '500': description: Internal server error '502': description: Metrics backend query failed '503': description: Metrics backend unavailable '504': description: Metrics backend timed out /compute/funcs/{id}/revisions: get: operationId: ListComputeFunctionRevisions summary: List function revisions description: Lists a function's ship history newest first, including per-ship failure stage and reason when recorded. tags: - functions parameters: - name: id in: path required: true description: Function ID schema: type: string - name: page[number] in: query required: false schema: type: integer minimum: 1 default: 1 - name: page[size] in: query required: false schema: type: integer minimum: 1 maximum: 250 default: 10 responses: '200': description: Function revisions retrieved successfully content: application/json: schema: $ref: '#/components/schemas/RevisionListResponse' example: meta: total_pages: 1 total_results: 2 page_number: 1 page_size: 10 data: - record_type: compute_func_revision revision_id: rev-01998f0a image: registry.example/function@sha256:abc commit_sha: 3f8a1c2 shipped_by: user@example.com shipped_at: '2026-09-09T15:45:00.000Z' build_status: build_ok deploy_status: deploy_ok active: true build_ok_at: '2026-09-09T15:44:41.000Z' - record_type: compute_func_revision revision_id: '' image: '' commit_sha: 0d9c123 shipped_by: user@example.com shipped_at: '2026-09-09T14:30:00.000Z' build_status: build_failed deploy_status: pending active: false failure_stage: build failure_reason: TypeScript compilation failed. '400': description: Invalid function ID '401': description: Unauthorized '404': description: Function not found '500': description: Internal server error /compute/funcs/{id}/ship_inspection: get: operationId: GetComputeFunctionShipInspection summary: Inspect latest function ship description: Returns the latest ship outcome. The stage is `none` on success, `pending` while building, or a failure stage such as `build`, `platform`, `pre_build`, `deploy`, or `security_review`. This stage-neutral customer-facing path is an alias over the same inspection resource as `build_log_inspection`. tags: - functions parameters: - name: id in: path required: true description: Function ID schema: type: string responses: '200': description: Latest ship inspection content: application/json: schema: $ref: '#/components/schemas/ShipInspectionResponseWrapper' example: data: record_type: build_log_inspection runtime: node stage: build reason: 'index.ts(8,7): error TS2322: Type ''string'' is not assignable to type ''number''.' snippet: 'index.ts(8,7): error TS2322' created_at: '2026-09-09T15:30:00.000Z' '404': description: Function or inspectable ship outcome not found '422': description: Invalid function ID '500': description: Internal server error /conferences: get: x-group-parameters: 'true' x-latency-category: responsive description: Lists conferences. Conferences are created on demand, and will expire after all participants have left the conference or after 4 hours regardless of the number of active participants. Conferences are listed in descending order by `expires_at`. summary: List conferences operationId: ListConferences tags: - Conference Commands parameters: - $ref: '#/components/parameters/ConferenceRegion' - $ref: '#/components/parameters/call-control_FilterConsolidated' - $ref: '#/components/parameters/call-control_PageConsolidated' responses: '200': description: Successful response with a list of conferences. content: application/json: schema: type: object title: List Conferences Response properties: data: type: array items: $ref: '#/components/schemas/Conference' meta: $ref: '#/components/schemas/PaginationMeta' '401': $ref: '#/components/responses/UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' post: summary: Create conference description: 'Create a conference from an existing call leg using a `call_control_id` and a conference name. Upon creating the conference, the call will be automatically bridged to the conference. Conferences will expire after all participants have left the conference or after 4 hours regardless of the number of active participants. **Expected Webhooks:** - `conference.created` - `conference.participant.joined` - `conference.participant.left` - `conference.ended` - `conference.recording.saved` - `conference.floor.changed` ' operationId: CreateConference tags: - Conference Commands requestBody: description: Create a conference required: true content: application/json: schema: $ref: '#/components/schemas/CreateConferenceRequest' responses: '200': description: Successful response with details about a conference. content: application/json: schema: type: object title: Conference Response properties: data: $ref: '#/components/schemas/Conference' '401': $ref: '#/components/responses/UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{conference_id}/participants: get: description: Returns a paginated list of participants in the specified conference, with support for filtering. summary: List conference participants operationId: ListConferenceParticipants tags: - Conference Commands parameters: - name: conference_id description: Uniquely identifies the conference by id in: path required: true schema: type: string - $ref: '#/components/parameters/ConferenceRegion' - $ref: '#/components/parameters/call-control_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[muted], filter[on_hold], filter[whispering]' schema: type: object properties: muted: type: boolean description: If present, participants will be filtered to those who are/are not muted on_hold: type: boolean description: If present, participants will be filtered to those who are/are not put on hold whispering: type: boolean description: If present, participants will be filtered to those who are whispering or are not responses: '200': description: Successful response with a list of conference participants. content: application/json: schema: type: object title: List Participants Response properties: data: type: array items: $ref: '#/components/schemas/Participant' meta: $ref: '#/components/schemas/PaginationMeta' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}: get: summary: Retrieve a conference description: Returns the details of an existing conference, including its current status. operationId: RetrieveConference tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id in: path required: true schema: type: string - $ref: '#/components/parameters/ConferenceRegion' responses: '200': description: Successful response with details about a conference. content: application/json: schema: type: object title: Conference Response properties: data: $ref: '#/components/schemas/Conference' '404': $ref: '#/components/responses/NotFoundResponse' /conferences/{id}/actions/end: post: summary: End a conference description: End a conference and terminate all active participants. operationId: EndConference tags: - Conference Commands parameters: - name: id in: path required: true description: Uniquely identifies the conference. schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/EndConferenceRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' x-endpoint-cost: 0.01 /conferences/{id}/actions/gather_using_audio: post: summary: Gather DTMF using audio prompt in a conference description: Play an audio file to a specific conference participant and gather DTMF input. operationId: ConferenceGatherUsingAudio tags: - Conference Commands parameters: - name: id in: path required: true description: Uniquely identifies the conference. schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/ConferenceGatherUsingAudioRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' x-endpoint-cost: 0.01 /conferences/{id}/actions/hold: post: summary: Hold conference participants description: Hold a list of participants in a conference call operationId: HoldConferenceParticipants tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceHoldRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/join: post: summary: Join a conference description: "Join an existing call leg to a conference. Issue the Join Conference command with the conference ID in\ \ the path and the `call_control_id` of the leg you wish to join to the conference as an attribute. The conference\ \ can have up to a certain amount of active participants, as set by the `max_participants` parameter in conference\ \ creation request. \n\n**Expected Webhooks:**\n\n- `conference.participant.joined`\n- `conference.participant.left`\n" operationId: JoinConference tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: description: Join Conference request object required: true content: application/json: schema: $ref: '#/components/schemas/JoinConferenceRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/leave: post: summary: Leave a conference description: "Removes a call leg from a conference and moves it back to parked state. \n\n**Expected Webhooks:**\n\n\ - `conference.participant.left`\n" operationId: LeaveConference tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: description: Leave Conference request object required: true content: application/json: schema: $ref: '#/components/schemas/LeaveConferenceRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/mute: post: summary: Mute conference participants description: Mute a list of participants in a conference call operationId: MuteConferenceParticipants tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceMuteRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/play: post: summary: Play audio to conference participants description: Play audio to all or some participants on a conference call. operationId: PlayConferenceAudio tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferencePlayRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/record_pause: post: summary: Conference recording pause description: Pauses the active recording of the specified conference. Resume it later with the record_resume action. operationId: PauseConferenceRecording tags: - Conference Commands parameters: - name: id description: Specifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PauseConferenceRecordingRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/record_resume: post: summary: Conference recording resume description: Resumes a previously paused recording of the specified conference, continuing capture from the point it was paused. operationId: ResumeConferenceRecording tags: - Conference Commands parameters: - name: id description: Specifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ResumeConferenceRecordingRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/record_start: post: summary: Conference recording start description: 'Start recording the conference. Recording will stop on conference end, or via the Stop Recording command. **Expected Webhooks:** - `conference.recording.saved`' operationId: StartConferenceRecording tags: - Conference Commands parameters: - name: id description: Specifies the conference to record by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StartConferenceRecordingRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' '503': $ref: '#/components/responses/RecordingStartUnavailableResponse' /conferences/{id}/actions/record_stop: post: summary: Conference recording stop description: 'Stop recording the conference. **Expected Webhooks:** - `conference.recording.saved` ' operationId: StopConferenceRecording tags: - Conference Commands parameters: - name: id description: Specifies the conference to stop the recording for by id or name in: path required: true schema: type: string requestBody: description: Stop recording conference request required: true content: application/json: schema: $ref: '#/components/schemas/StopRecordingConferenceRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/send_dtmf: post: summary: Send DTMF to conference participants description: Send DTMF tones to one or more conference participants. operationId: ConferenceSendDTMF tags: - Conference Commands parameters: - name: id in: path required: true description: Uniquely identifies the conference. schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/ConferenceSendDTMFRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' x-endpoint-cost: 0.01 /conferences/{id}/actions/speak: post: summary: Speak text to conference participants description: Convert text to speech and play it to all or some participants. operationId: SpeakTextToConference tags: - Conference Commands parameters: - name: id description: Specifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceSpeakRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/stop: post: summary: Stop audio being played on the conference description: Stop audio being played to all or some participants on a conference call. operationId: StopConferenceAudio tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceStopRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/unhold: post: summary: Unhold conference participants description: Unhold a list of participants in a conference call operationId: UnholdConferenceParticipants tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceUnholdRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/unmute: post: summary: Unmute conference participants description: Unmute a list of participants in a conference call operationId: UnmuteConferenceParticipants tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceUnmuteRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/actions/update: post: summary: Update conference participant description: Update conference participant supervisor_role operationId: UpdateConference tags: - Conference Commands parameters: - name: id description: Uniquely identifies the conference by id or name in: path required: true schema: type: string requestBody: description: Update Conference request object required: true content: application/json: schema: $ref: '#/components/schemas/UpdateConferenceRequest' responses: '200': description: Successful response upon making a conference command. content: application/json: schema: type: object title: Conference Command Response properties: data: $ref: '#/components/schemas/ConferenceCommandResult' '401': $ref: '#/components/responses/UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /conferences/{id}/participants/{participant_id}: get: summary: Retrieve a conference participant description: Retrieve details of a specific conference participant by their ID or label. operationId: RetrieveConferenceParticipant tags: - Conference Commands parameters: - name: id in: path required: true description: Uniquely identifies the conference. schema: type: string format: uuid - name: participant_id in: path required: true description: Uniquely identifies the participant by their ID or label. schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantResource' example: data: id: string call_control_id: string call_leg_id: string conference_id: string label: string status: joining muted: false on_hold: false whisper_call_control_ids: - string created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' end_conference_on_exit: false soft_end_conference_on_exit: false '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' x-endpoint-cost: 0.01 patch: summary: Update a conference participant description: Update properties of a conference participant. operationId: UpdateConferenceParticipant tags: - Conference Commands parameters: - name: id in: path required: true description: Uniquely identifies the conference. schema: type: string format: uuid - name: participant_id in: path required: true description: Uniquely identifies the participant. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateConferenceParticipantRequest' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantResource' example: data: id: string call_control_id: string call_leg_id: string conference_id: string label: string status: joining muted: false on_hold: false whisper_call_control_ids: - string created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' end_conference_on_exit: false soft_end_conference_on_exit: false '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' x-endpoint-cost: 0.01 /connections: get: description: Returns a list of your connections irrespective of type. summary: List connections operationId: ListConnections tags: - 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': $ref: '#/components/responses/ListConnectionsResponse' '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' /connections/count: get: description: Returns the number of connections associated with the authenticated user, grouped by connection type, together with the connection limits that apply to the user. Forward-only connections are excluded from the counts. summary: Count connections operationId: CountConnections tags: - Connections responses: '200': description: Successful response with connection counts and limits. content: application/json: schema: type: object title: Connections Count Response required: - data properties: data: $ref: '#/components/schemas/ConnectionsCount' example: data: record_type: connections_count counts: ip_connections: 12 credential_connections: 5 uac_connections: 0 fqdn_connections: 3 call_control_applications: 2 texml_applications: 1 third_party_provider_connections: 0 external_connections: 1 fax_connections: 0 mobile_voice_connections: 0 microsoft_teams_sbc_connections: 0 zoom_sbc_connections: 0 operator_connect_connections: 0 limits: global_limit: 10000 '401': $ref: '#/components/responses/UnauthenticatedResponse' /connections/{connection_id}/active_calls: get: summary: List all active calls for given connection description: 'Lists all active calls for given connection. Acceptable connections are either SIP connections with webhook_url or xml_request_url, call control or texml. Returned results are cursor paginated. ' x-latency-category: responsive x-group-parameters: 'true' operationId: ListConnectionActiveCalls tags: - Call Information parameters: - $ref: '#/components/parameters/ConnectionId' - $ref: '#/components/parameters/call-control_PageConsolidated' responses: '200': description: Successful response with list of details about active calls. content: application/json: schema: type: object title: Active Calls Response properties: data: type: array items: $ref: '#/components/schemas/ActiveCall' meta: $ref: '#/components/schemas/CursorPaginationMeta' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /connections/{id}: get: description: Retrieves the high-level details of an existing connection. To retrieve specific authentication information, use the endpoint for the specific connection type. summary: Retrieve a connection operationId: RetrieveConnection tags: - Connections parameters: - name: id in: path description: IP Connection ID required: true schema: type: string responses: '200': description: Successful response with details about a connection. content: application/json: schema: type: object title: Connection Response properties: data: $ref: '#/components/schemas/Connection' '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' /country_coverage: get: summary: Get country coverage description: Returns Telnyx service coverage information for every country, including which number types and features are available in each. operationId: retreiveCountryCoverage tags: - Country Coverage responses: '200': description: Response for country coverage content: application/json: schema: type: object properties: data: type: object additionalProperties: $ref: '#/components/schemas/CountryCoverage' examples: example-1: value: data: Afghanistan: code: AF numbers: false features: [] phone_number_type: [] reservable: false quickship: false international_sms: false p2p: false local: {} toll_free: {} mobile: {} national: {} region: null inventory_coverage: false Aland Islands: code: AX numbers: false features: [] phone_number_type: [] reservable: false quickship: false international_sms: false p2p: false local: {} toll_free: {} mobile: {} national: {} region: null inventory_coverage: false Albania: code: AL numbers: true features: - voice - fax phone_number_type: - local - toll_free reservable: false quickship: false international_sms: false p2p: false local: features: - fax - voice reservable: false full_pstn_replacement: false quickship: false international_sms: false p2p: false toll_free: features: - fax - voice reservable: false full_pstn_replacement: false quickship: false international_sms: false p2p: false mobile: {} national: {} region: EMEA inventory_coverage: false shared_cost: {} Algeria: code: DZ numbers: false features: [] phone_number_type: [] reservable: false quickship: false international_sms: false p2p: false local: {} toll_free: {} mobile: {} national: {} region: null inventory_coverage: false '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' /country_coverage/countries/{country_code}: get: parameters: - name: country_code in: path description: Country ISO code. required: true schema: type: string example: US summary: Get coverage for a specific country description: Returns Telnyx service coverage information for the specified country, including available number types and features. operationId: retreiveSpecificCountryCoverage tags: - Country Coverage responses: '200': description: Response for specific country coverage content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/CountryCoverage' '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' /credential_connections: get: description: Returns a list of your credential connections. summary: List credential connections operationId: ListCredentialConnections tags: - Credential 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 credential connections. content: application/json: schema: type: object title: List Credential Connections Response properties: data: type: array items: $ref: '#/components/schemas/CredentialConnection' 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 new credential-based SIP connection. Credential connections authenticate with a username and password rather than by IP address. summary: Create a credential connection operationId: CreateCredentialConnection tags: - Credential Connections x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be defined during credential connection creation required: true content: application/json: schema: $ref: '#/components/schemas/CreateCredentialConnectionRequest' responses: '201': description: Successful response with details about a credential connection. content: application/json: schema: type: object title: Credential Connection Response properties: data: $ref: '#/components/schemas/CredentialConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /credential_connections/{id}: delete: description: Deletes an existing credential connection. summary: Delete a credential connection operationId: DeleteCredentialConnection tags: - Credential 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. content: application/json: schema: type: object title: Credential Connection Response properties: data: $ref: '#/components/schemas/CredentialConnection' '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 credential connection. summary: Retrieve a credential connection operationId: RetrieveCredentialConnection tags: - Credential 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. content: application/json: schema: type: object title: Credential Connection Response properties: data: $ref: '#/components/schemas/CredentialConnection' '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 credential connection. summary: Update a credential connection operationId: UpdateCredentialConnection tags: - Credential Connections parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string requestBody: description: Parameters that can be updated in a credential connection required: true content: application/json: schema: $ref: '#/components/schemas/UpdateCredentialConnectionRequest' responses: '200': description: Successful response with details about a credential connection. content: application/json: schema: type: object title: Credential Connection Response properties: data: $ref: '#/components/schemas/CredentialConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' '409': description: Conflict. Another update to this credential 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 credential connection is still in progress. Please try again later. '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /credential_connections/{id}/actions/check_registration_status: post: description: Returns the live SIP registration status for a credential connection. Reports whether the endpoint is currently registered (`status`) and the timestamp of the last SIP registration event (`last_registration`). summary: Check a Credential Connection Registration Status operationId: CheckRegistrationStatus tags: - Credential 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' /custom_storage_credentials/{connection_id}: delete: summary: Delete a stored credential description: Deletes a stored custom credentials configuration. operationId: DeleteCustomStorageCredentials tags: - Call Recordings parameters: - $ref: '#/components/parameters/call-recordings_ConnectionId' responses: '204': description: The credentials configuration for connection_id was deleted successfully. 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 stored credential description: Returns the information about custom storage credentials. operationId: GetCustomStorageCredentials tags: - Call Recordings parameters: - $ref: '#/components/parameters/call-recordings_ConnectionId' responses: '200': description: A response containing a credentials resource. content: application/json: schema: $ref: '#/components/schemas/CredentialsResponse' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' post: summary: Create a custom storage credential description: Creates a custom storage credentials configuration. operationId: CreateCustomStorageCredentials tags: - Call Recordings parameters: - $ref: '#/components/parameters/call-recordings_ConnectionId' requestBody: $ref: '#/components/requestBodies/CreateCredentialsRequest' responses: '200': description: A response containing a credentials resource. content: application/json: schema: $ref: '#/components/schemas/CredentialsResponse' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' put: summary: Update a stored credential description: Updates a stored custom credentials configuration. operationId: UpdateCustomStorageCredentials tags: - Call Recordings parameters: - $ref: '#/components/parameters/call-recordings_ConnectionId' requestBody: $ref: '#/components/requestBodies/CreateCredentialsRequest' responses: '200': description: A response containing a credentials resource. content: application/json: schema: $ref: '#/components/schemas/CredentialsResponse' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' /customer_service_records: get: tags: - Customer Service Record summary: List customer service records description: Returns a paginated list of your customer service record (CSR) requests, with support for filtering and sorting. operationId: ListCustomerServiceRecords parameters: - $ref: '#/components/parameters/customer_service_record_PageConsolidated' - $ref: '#/components/parameters/customer_service_record_FilterConsolidated' - 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/CustomerServiceRecord' meta: $ref: '#/components/schemas/PaginationMeta' '401': $ref: '#/components/responses/customer_service_record_UnauthorizedErrorResponse' '403': $ref: '#/components/responses/customer_service_record_ForbiddenErrorResponse' '422': $ref: '#/components/responses/customer_service_record_UnprocessableEntityErrorResponse' '500': $ref: '#/components/responses/UnexpectedErrorResponse' post: tags: - Customer Service Record summary: Create a customer service record description: Create a new customer service record for the provided phone number. operationId: CreateCustomerServiceRecord requestBody: $ref: '#/components/requestBodies/CreateCustomerServiceRecord' responses: '201': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/CustomerServiceRecord' example: data: id: db7cebdb-21a8-4e89-8f51-e03ba6b799bb phone_number: '+2003271000' status: pending error_message: null result: null webhook_url: https://example.com/webhook created_at: '2023-01-01T00:00:00Z' updated_at: '2023-01-01T00:00:00Z' '401': $ref: '#/components/responses/customer_service_record_UnauthorizedErrorResponse' '403': $ref: '#/components/responses/customer_service_record_ForbiddenErrorResponse' '422': $ref: '#/components/responses/customer_service_record_UnprocessableEntityErrorResponse' '500': $ref: '#/components/responses/UnexpectedErrorResponse' /customer_service_records/phone_number_coverages: post: tags: - Customer Service Record summary: Verify CSR phone number coverage description: Verify the coverage for a list of phone numbers. operationId: VerifyPhoneNumberCoverage requestBody: $ref: '#/components/requestBodies/VerifyCustomerServiceRecordPhoneNumberCoverage' responses: '201': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/CustomerServiceRecordPhoneNumberCoverage' '401': $ref: '#/components/responses/customer_service_record_UnauthorizedErrorResponse' '403': $ref: '#/components/responses/customer_service_record_ForbiddenErrorResponse' '422': $ref: '#/components/responses/customer_service_record_UnprocessableEntityErrorResponse' '500': $ref: '#/components/responses/UnexpectedErrorResponse' /customer_service_records/{customer_service_record_id}: get: tags: - Customer Service Record summary: Get a customer service record description: Returns the details of a single customer service record (CSR) request, including its status and any retrieved record data. operationId: GetCustomerServiceRecord parameters: - $ref: '#/components/parameters/PathCustomerServiceRecordId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/CustomerServiceRecord' '401': $ref: '#/components/responses/customer_service_record_UnauthorizedErrorResponse' '403': $ref: '#/components/responses/customer_service_record_ForbiddenErrorResponse' '404': $ref: '#/components/responses/ResourceNotFoundErrorResponse' '500': $ref: '#/components/responses/UnexpectedErrorResponse' /detail_records: get: tags: - Detail Records summary: Search detail records description: Search for any detail record across the Telnyx Platform operationId: SearchDetailRecords parameters: - name: filter in: query style: deepObject explode: true description: 'Filter records on a given record attribute and value.
Example: filter[status]=delivered.
Required: filter[record_type] must be specified.
The valid filter fields depend on the record_type: filtering by a field that does not exist for the selected record_type is rejected with a 400 error. Call-control and sip-trunking records use started_at, finished_at and answered_at (they have no created_at); messaging records use created_at. To list the fields available for a record_type, use the /v2/detail_records/options endpoint.' required: false schema: type: object properties: record_type: type: string enum: - ai-voice-assistant - amd - call-control - conference - conference-participant - embedding - fax - inference - inference-speech-to-text - media_storage - media-streaming - messaging - noise-suppression - recording - sip-trunking - siprec-client - stt - tts - verify - webrtc - wireless description: Filter by the given record type. date_range: type: string enum: - yesterday - today - tomorrow - last_week - this_week - next_week - last_month - this_month - next_month description: 'Filter by the given user-friendly date range. You can specify one of the following enum values, or a dynamic one using this format: last_N_days.' required: - record_type additionalProperties: true examples: filter[record_type]=messaging: value: record_type: messaging summary: Searches for messaging detail records filter[record_type]=verify: value: record_type: verify summary: Searches for verify detail records filter[date_range]=today: value: record_type: messaging date_range: today summary: Searches for records with timestamp starting at `00:00:00` of the current day filter[date_range]=yesterday: value: record_type: messaging date_range: yesterday summary: Searches for records with timestamp starting at `00:00:00` of yesterday filter[date_range]=last_month: value: record_type: messaging date_range: last_month summary: Searches for records with timestamp starting at `00:00:00` on the first day of the month filter[created_at][gte]=2021-06-22: value: record_type: messaging created_at: gte: '2021-06-22' summary: Searches for records with `created_at` starting at `2021-06-22` filter[created_at][lt]=2021-06-23: value: record_type: messaging created_at: lt: '2021-06-23' summary: Searches for records with `created_at` ending at `2021-06-22` filter[direction]=inbound: value: record_type: messaging direction: inbound summary: Searches for records which have the property `direction` equal to `inbound` filter[cld][contains]=456: value: record_type: messaging cld: contains: '456' summary: Searches for records which have the property `cld` containing the pattern `456` filter[cld][starts_with]=123: value: record_type: messaging cld: starts_with: '123' summary: Searches for records which have the property `cld` starting with the prefix `123` filter[cld][ends_with]=789: value: record_type: messaging cld: ends_with: '789' summary: Searches for records which have the property `cld` ending with the suffix `789` - name: sort description: 'Specifies the sort order for results.
Example: sort=-created_at
The valid sort fields depend on the record_type: sort by a field that does not exist for the selected record_type is rejected with a 400 error. Call-control and sip-trunking records use started_at, finished_at and answered_at (they have no created_at); messaging records use created_at. To list the fields available for a record_type, use the /v2/detail_records/options endpoint.' in: query 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: 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 minimum: 1 description: Page number size: type: integer format: int32 default: 20 minimum: 1 maximum: 50 description: Page size examples: page[number]=1&page[size]=20: value: number: 1 size: 20 summary: Default pagination with first page and 20 items per page page[number]=2&page[size]=20: value: number: 2 size: 20 summary: Second page with 20 items per page page[number]=1&page[size]=50: value: number: 1 size: 50 summary: First page with maximum 50 items per page responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/DetailRecordsSearchResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/detail-records_ErrorResponse' x-latency-category: interactive /dial_metrics: get: summary: List dial metrics description: 'Returns dials-per-second (DPS) metrics for your account''s outbound dials made with the Call Control `Dial` command and TeXML, as time buckets with dial counts, accepted and rejected dials, average and peak DPS, and the DPS limit in force. The result has one record per region per bucket, ordered by `start_time` and then `region`, newest first unless `sort=start_time`. Regions are never summed: the DPS limit is enforced per region, so a cross-region total cannot be compared with it. Only buckets that saw dials are returned. Treat a missing bucket as zero dials. Only complete 5-second windows are counted, and a window is counted about 15 seconds after it closes. The newest `granularity=second` record is therefore your live DPS, about 20 seconds old. Request the last minute or two with `sort=-start_time`; the first record of each `region` is that region''s live rate (`page[limit]=1` would hide every region but one). If no recent record exists, the live rate is zero. Results are cursor paginated. Follow `meta.next`, or pass `meta.cursors.after` as `page[after]`, until `meta.next` is absent. No total count is returned. This endpoint is in development and can change before general availability. ' x-latency-category: responsive x-group-parameters: 'true' operationId: ListDialMetrics tags: - Call Information parameters: - name: granularity in: query required: true description: Bucket size. `second` returns 5-second buckets (the finest resolution) and is kept for the last 48 hours. `minute` and `hour` are kept for the last 30 days. schema: type: string enum: - second - minute - hour example: hour - name: start_time in: query required: true description: Inclusive start of the range, ISO 8601 (for example `2026-09-29T12:00:00.000Z`). Buckets that start at or after this time are returned. Must not be older than the retention window of the chosen `granularity`. schema: type: string format: date-time example: '2026-09-29T12:00:00.000Z' - name: end_time in: query required: true description: Exclusive end of the range, ISO 8601. Must be after `start_time`. Buckets that start before this time are returned. schema: type: string format: date-time example: '2026-09-29T14:00:00.000Z' - name: sort in: query required: false description: Sort order of the buckets by `start_time`. `-start_time` (default) returns the newest first, `start_time` the oldest first. `region` follows the same direction for buckets with the same `start_time`. To read the live rate, use `granularity=second` and `sort=-start_time`, then take the first record of each `region`. schema: type: string enum: - -start_time - start_time default: -start_time - name: page[after] in: query required: false description: Opaque cursor from `meta.cursors.after` of the previous page. Do not parse or construct it. A cursor that matches no records returns an empty page whose `meta.cursors.after` and `meta.cursors.before` both echo the given cursor. schema: type: string - name: page[limit] in: query required: false description: Maximum number of buckets per page. Values outside the range are clamped to 1-10,000. schema: type: integer minimum: 1 maximum: 10000 default: 1000 responses: '200': description: Successful response with a page of dial metrics buckets. content: application/json: schema: $ref: '#/components/schemas/ListDialMetricsResponse' examples: hour: summary: Hourly buckets, newest first value: data: - record_type: dial_metric region: us start_time: '2026-09-29T13:00:00.000Z' end_time: '2026-09-29T14:00:00.000Z' dials: total: 85600 accepted: 85240 rejected: dps_limit: 360 hourly_limit: 0 daily_limit: 0 average_dps: 23.7778 peak_dps: 104.0 dps_limit: 100 - record_type: dial_metric region: eu start_time: '2026-09-29T13:00:00.000Z' end_time: '2026-09-29T14:00:00.000Z' dials: total: 1200 accepted: 1200 rejected: dps_limit: 0 hourly_limit: 0 daily_limit: 0 average_dps: 0.3333 peak_dps: 4.0 dps_limit: null meta: granularity: hour sort: -start_time start_time: '2026-09-29T12:00:00.000Z' end_time: '2026-09-29T14:00:00.000Z' cursors: after: MTc5MDY4NjgwMDpldQ next: /v2/dial_metrics?end_time=2026-09-29T14%3A00%3A00.000Z&granularity=hour&page%5Bafter%5D=MTc5MDY4NjgwMDpldQ&page%5Blimit%5D=2&sort=-start_time&start_time=2026-09-29T12%3A00%3A00.000Z second: summary: One 5-second bucket, DPS limit reached (granularity=second) value: data: - record_type: dial_metric region: us start_time: '2026-09-29T12:00:30.000Z' end_time: '2026-09-29T12:00:35.000Z' dials: total: 162 accepted: 150 rejected: dps_limit: 12 hourly_limit: 0 daily_limit: 0 average_dps: 32.4 peak_dps: 32.4 dps_limit: 30 meta: granularity: second sort: -start_time start_time: '2026-09-29T12:00:30.000Z' end_time: '2026-09-29T12:00:35.000Z' cursors: {} second_normal: summary: One 5-second bucket, no rejections (granularity=second) value: data: - record_type: dial_metric region: us start_time: '2026-09-29T12:00:30.000Z' end_time: '2026-09-29T12:00:35.000Z' dials: total: 95 accepted: 95 rejected: dps_limit: 0 hourly_limit: 0 daily_limit: 0 average_dps: 19.0 peak_dps: 19.0 dps_limit: 30 meta: granularity: second sort: -start_time start_time: '2026-09-29T12:00:30.000Z' end_time: '2026-09-29T12:00:35.000Z' cursors: {} empty_page: summary: Cursor that matches nothing value: data: [] meta: granularity: hour sort: -start_time start_time: '2026-09-29T12:00:00.000Z' end_time: '2026-09-29T14:00:00.000Z' cursors: after: MTc5MDY4MzIwMDp1cw before: MTc5MDY4MzIwMDp1cw '401': $ref: '#/components/responses/UnauthorizedResponse' '404': description: Resource not found. The route does not exist. content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' example: errors: - code: '10005' title: Resource not found detail: Not Found meta: url: https://developers.telnyx.com/docs/overview/errors/10005 '422': description: Unprocessable entity. A required parameter is missing, a parameter has an invalid value, or the range is outside the retention window of the chosen granularity. 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: start_time is required source: parameter: start_time meta: url: https://developers.telnyx.com/docs/overview/errors/10004 invalid_granularity: summary: Unknown granularity value: errors: - code: '10032' title: Invalid enumerated value detail: 'granularity must be one of: second, minute, hour' source: parameter: granularity meta: url: https://developers.telnyx.com/docs/overview/errors/10032 invalid_date_time: summary: Unparseable date-time value: errors: - code: '10026' title: Invalid parameter type detail: start_time must be an ISO 8601 date-time, e.g. 2026-09-29T12:00:00.000Z source: parameter: start_time meta: url: https://developers.telnyx.com/docs/overview/errors/10026 invalid_cursor: summary: Invalid cursor value: errors: - code: '10026' title: Invalid parameter type detail: page[after] is not a cursor this API returned source: parameter: page[after] meta: url: https://developers.telnyx.com/docs/overview/errors/10026 end_before_start: summary: end_time not after start_time value: errors: - code: '10033' title: Value outside of range detail: end_time must be after start_time source: parameter: end_time meta: url: https://developers.telnyx.com/docs/overview/errors/10033 outside_retention: summary: Outside retention value: errors: - code: '10033' title: Value outside of range detail: granularity is only available for the last 48 hours; start_time is before 2026-09-27T12:00:00.000Z, which is outside the retention window source: parameter: start_time meta: url: https://developers.telnyx.com/docs/overview/errors/10033 invalid_sort: summary: Unknown sort value: errors: - code: '10032' title: Invalid enumerated value detail: 'sort must be one of: -start_time, start_time' source: parameter: sort meta: url: https://developers.telnyx.com/docs/overview/errors/10032 '429': $ref: '#/components/responses/RateLimitExceededResponse' '500': $ref: '#/components/responses/InternalServerErrorResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' /dialogflow_connections/{connection_id}: delete: summary: Delete stored Dialogflow Connection description: Deletes the stored Dialogflow connection for the specified connection. operationId: DeleteDialogflowConnection tags: - Dialogflow Integration parameters: - $ref: '#/components/parameters/media-streaming_ConnectionId' responses: '204': description: The Dialogflow Connection for connection_id was deleted successfully. '404': $ref: '#/components/responses/media-streaming_NotFoundResponse' default: $ref: '#/components/responses/media-streaming_GenericErrorResponse' get: summary: Retrieve stored Dialogflow Connection description: Return details of the Dialogflow connection associated with the given CallControl connection. operationId: GetDialogflowConnection tags: - Dialogflow Integration parameters: - $ref: '#/components/parameters/media-streaming_ConnectionId' responses: '200': description: Return details of the Dialogflow connection associated with the given CallControl connection. content: application/json: schema: $ref: '#/components/schemas/DialogflowConnectionResponse' '404': $ref: '#/components/responses/media-streaming_NotFoundResponse' default: $ref: '#/components/responses/media-streaming_GenericErrorResponse' post: summary: Create a Dialogflow Connection description: Save Dialogflow Credentiails to Telnyx, so it can be used with other Telnyx services. operationId: CreateDialogflowConnection tags: - Dialogflow Integration parameters: - $ref: '#/components/parameters/media-streaming_ConnectionId' requestBody: $ref: '#/components/requestBodies/DialogflowConnectionRequest' responses: '201': description: Return details of the Dialogflow connection associated with the given CallControl connection. content: application/json: schema: $ref: '#/components/schemas/DialogflowConnectionResponse' '422': $ref: '#/components/responses/media-streaming_UnprocessableEntityResponse' default: $ref: '#/components/responses/media-streaming_GenericErrorResponse' put: summary: Update stored Dialogflow Connection description: Updates the stored Dialogflow connection for the specified connection and returns the updated configuration. operationId: UpdateDialogflowConnection tags: - Dialogflow Integration parameters: - $ref: '#/components/parameters/media-streaming_ConnectionId' requestBody: $ref: '#/components/requestBodies/DialogflowConnectionRequest' responses: '200': description: Return details of the Dialogflow connection associated with the given CallControl connection. content: application/json: schema: $ref: '#/components/schemas/DialogflowConnectionResponse' '404': $ref: '#/components/responses/media-streaming_NotFoundResponse' '422': $ref: '#/components/responses/media-streaming_UnprocessableEntityResponse' default: $ref: '#/components/responses/media-streaming_GenericErrorResponse' /dir: get: summary: List all DIRs across your enterprises description: 'Returns every DIR (Display Identity Record) you own, across all of your enterprises, as a single list. Pagination is JSON:API style (`page[number]`, `page[size]`, max 250). Supports `filter[]` query params: `filter[enterprise_id]`, `filter[status]`, `filter[display_name][contains]`, `filter[call_reason][contains]`, plus the renewal-window filters `filter[expiring_at][gte]` / `filter[expiring_at][lte]`. Sortable by `created_at`, `updated_at`, `display_name`, `status` (prefix `-` for descending; default `-created_at`).' operationId: listAllDirs tags: - Display Identity Records parameters: - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' - name: sort in: query required: false description: 'Sort field. Allowed values: `created_at`, `updated_at`, `display_name`, `status`. Prefix with `-` for descending. Default `-created_at`.' schema: type: string default: -created_at enum: - created_at - -created_at - updated_at - -updated_at - display_name - -display_name - status - -status - name: filter[expiring_at][gte] in: query required: false description: Return only DIRs whose `expiring_at` is at or after this ISO-8601 timestamp. Pairs with the `[lte]` variant to build renewal-window dashboards. schema: type: string format: date-time - name: filter[expiring_at][lte] in: query required: false description: Return only DIRs whose `expiring_at` is at or before this ISO-8601 timestamp. schema: type: string format: date-time - name: filter[enterprise_id] in: query required: false description: Filter by enterprise ID. schema: type: string format: uuid - name: filter[status] in: query required: false description: Filter by DIR status. schema: $ref: '#/components/schemas/DirStatus' - name: filter[display_name][contains] in: query required: false description: Case-insensitive partial match on display name. schema: type: string - name: filter[call_reason][contains] in: query required: false description: Case-insensitive partial match on call reason. schema: type: string responses: '200': description: Paginated list of DIRs across all your enterprises. content: application/json: schema: $ref: '#/components/schemas/DirList' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/document_types: get: summary: List supported DIR document types description: Reference list of `document_type` values accepted by `DirCreateRequest.documents[].document_type` and the infringement-contest endpoint. Each entry has a stable `short_name` (used in API calls) and a customer-facing description. operationId: listDocumentTypes tags: - Reference Data responses: '200': description: List of supported document types. content: application/json: schema: $ref: '#/components/schemas/DocumentTypeReferenceList' example: data: - short_name: letter_of_authorization description: Signed authorization from the DIR owner permitting Telnyx to register the DIR and its associated numbers on their behalf - short_name: business_registration description: Official Secretary of State (or equivalent) registration showing the legal entity exists and is in good standing meta: total_pages: 1 total_results: 2 page_number: 1 page_size: 20 default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}: delete: summary: Request deletion of a DIR description: 'Request deletion of a DIR. This does not remove the DIR on this call: it records the request, moves the DIR to `delete_requested`, and Telnyx completes the removal (de-registration and cleanup) shortly after. A verified DIR keeps serving its branded identity, and keeps billing, until the removal is executed. Failure modes: `400` if a child phone number is still attached or the DIR is `in_review` (wait for the review to finish), `409` if the DIR has an unresolved infringement claim, `404` if the DIR is not yours.' operationId: deleteDirSimple tags: - Display Identity Records parameters: - $ref: '#/components/parameters/DirId' responses: '202': description: Deletion requested. The DIR moves to `delete_requested` and is torn down shortly after. content: application/json: schema: $ref: '#/components/schemas/DirDeleteRequestAccepted' example: data: id: 16635d38-75a6-4481-82e8-69af60e05011 status: delete_requested default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' get: summary: Get a DIR by id description: Returns a single DIR by id. The enterprise is resolved server-side from the DIR id. Returns `404` if the DIR does not exist or is not yours. operationId: getDirByIdSimple tags: - Display Identity Records parameters: - $ref: '#/components/parameters/DirId' responses: '200': description: DIR. content: application/json: schema: $ref: '#/components/schemas/DirWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' patch: summary: Update a DIR description: 'Edit a DIR. DIRs in `draft`, `rejected`, `unsuccessful`, or `suspended` can be edited freely: PATCH is a pure edit, `status` is never changed, and you re-vet by calling `POST /v2/dir/{dir_id}/submit` explicitly. A `verified` DIR can also be edited in place: a PATCH that changes any value returns the DIR to `draft`; the currently approved identity keeps displaying, and the edited content goes live only after you re-submit and the DIR is approved again. A PATCH that changes nothing (an empty body or values identical to the current ones) leaves the DIR `verified`, so idempotent retries are safe. Changing only `bpo_authorizations` or `webhook_url` is the exception: the DIR stays `verified`. Each BPO authorization is reviewed on its own instead. DIRs in any other status (`submitted`, `in_review`, `expired`, `infringement_claimed`, `permanently_rejected`) cannot be edited.' operationId: updateDirSimple tags: - Display Identity Records parameters: - $ref: '#/components/parameters/DirId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DirUpdateRequest' example: display_name: Acme Plumbing & Wellness call_reasons: - Appointment reminders - Billing inquiries - Lab results logo_url: https://acmeplumbing.example.com/logo-v2-256.bmp responses: '200': description: DIR updated. content: application/json: schema: $ref: '#/components/schemas/DirWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/bpo_authorizations: get: tags: - Display Identity Records summary: List a DIR's authorized BPOs operationId: listDirBpoAuthorizations description: 'List the BPO (Business Process Outsourcer) accounts a Brand Owner has authorized on this DIR, together with the review state of each authorization. Authorizations are supplied as the `bpo_authorizations` array when creating or updating a DIR, and each one is reviewed on its own. Only an `approved` authorization adds that BPO to this DIR''s authorized callers in the branded calling registry; `pending` and `rejected` authorizations do not. Each entry includes the `loa_document_id` you submitted: because `bpo_authorizations` replaces the whole list on every DIR update, send each entry you want to keep back with its `loa_document_id` unchanged, and it keeps its review state. A rejected entry carries a `rejection_reason`. Returns an empty list when the DIR has authorized no BPOs.' parameters: - $ref: '#/components/parameters/DirId' - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' responses: '200': description: Paginated list of the DIR's BPO authorizations. content: application/json: schema: $ref: '#/components/schemas/BpoAuthorizationList' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/bpo_loa: post: tags: - Display Identity Records summary: Render the BPO Authorization LOA for a DIR operationId: renderDirBpoLoa description: 'The Letter of Authorization in which a Brand Owner authorizes an approved BPO (Business Process Outsourcer) to place branded calls that display this DIR on the owner''s behalf. Both parties are read from the caller''s account: the Brand Owner is the enterprise that owns the DIR, and the BPO is `bpo_enterprise_id`. No business identity is accepted in the body. When `signature` is omitted the PDF is returned unsigned so the Brand Owner can sign it externally and the BPO can upload it via the Documents API. When `signature` is present the PDF embeds the supplied image, printed name, and signed-at date. Returns `application/pdf`.' parameters: - name: dir_id in: path required: true schema: type: string format: uuid description: The DIR id. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BpoAuthorizationLoaRenderRequest' responses: '200': description: The rendered BPO Authorization LOA PDF. content: application/pdf: schema: type: string format: binary '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/comments: get: summary: List comments on a DIR description: List the comments on a DIR. The enterprise is resolved server-side from the DIR id. operationId: listCommentsSimple tags: - Comments parameters: - $ref: '#/components/parameters/DirId' - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' - name: comment_type in: query required: false description: 'Restrict to comments of this category. Customer-visible categories only: internal-only comments are filtered out regardless of this filter.' schema: $ref: '#/components/schemas/CommentType' responses: '200': description: Paginated list of comments. content: application/json: schema: $ref: '#/components/schemas/CommentList' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' post: summary: Post a comment on a DIR description: Post a customer comment on a DIR (for example, to respond to reviewer notes). Send only `content` (1–5000 chars) and an optional `parent_comment_id`; the server sets the comment type, visibility, and author automatically. The enterprise is resolved server-side from the DIR id. operationId: createCommentSimple tags: - Comments parameters: - $ref: '#/components/parameters/DirId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DirCommentCreateRequest' example: content: 'Re-uploaded the certificate. New document_id: 89450109-ee35-411c-b5bb-14f1d806fca2.' responses: '201': description: Comment created. content: application/json: schema: $ref: '#/components/schemas/CommentWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/infringement_claims: get: summary: List infringement claims for a DIR description: 'Return the trademark or copyright claims filed against this DIR. Each claim''s `status` is `pending` (newly filed; DIR auto-suspended), `contested` (you have submitted contest evidence; awaiting resolution), or `resolved` (final). Resolution outcomes: `upheld` (claim accepted; DIR stays suspended/permanently_rejected), `rejected` (claim dismissed; DIR restored to `verified`), `modified` (partial outcome).' operationId: listInfringementClaimsForDir tags: - Infringement Claims parameters: - $ref: '#/components/parameters/DirId' - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' responses: '200': description: Paginated list of claims for this DIR. content: application/json: schema: $ref: '#/components/schemas/InfringementClaimList' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/infringement_update: put: summary: Update a DIR to resolve an infringement concern description: Push a fix for a DIR that is `suspended` with an open infringement claim back into vetting. `POST /dir/{dir_id}/submit` is blocked while a claim is open, so this is the customer-callable path to update the DIR's content and re-certify before Telnyx adjudicates the claim. All four certification booleans must be `true`. Optional content fields (`display_name`, `logo_url`, `call_reasons`, `documents`) update the DIR; documents are append-only. operationId: updateDirInfringement tags: - Infringement Claims parameters: - $ref: '#/components/parameters/DirId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DirInfringementUpdateRequest' example: certify_no_infringement: true certify_brand_is_accurate: true certify_no_shaft_content: true certify_ip_ownership: true infringement_resolution_notes: Updated the display name to remove the disputed mark and re-uploaded the authorization. responses: '200': description: DIR updated and re-submitted for vetting. content: application/json: schema: $ref: '#/components/schemas/DirWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '401': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '409': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '422': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/loa: post: tags: - Display Identity Records summary: Render the Branded Calling LOA for a DIR operationId: renderDirLoa description: 'Generate a pre-filled Letter of Authorization (LOA) PDF for a DIR. Enterprise identity (legal name, DBA, address, contact, website, tax id) and the DIR display name are read server-side; the caller supplies the telephone numbers to authorize, an optional Authorized Agent block, and an optional drawn signature. When `signature` is omitted the PDF is returned unsigned so the customer can sign it externally and upload it via the Documents API. When `signature` is present the PDF embeds the supplied image, printed name, and signed-at date. Returns `application/pdf`.' parameters: - name: dir_id in: path required: true schema: type: string format: uuid description: The DIR id. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BrandLoaRenderRequest' responses: '200': description: The rendered LOA PDF. content: application/pdf: schema: type: string format: binary '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/phone_number_batches: get: summary: List phone-number batches for a DIR description: List the phone-number batches submitted under a DIR. The enterprise is resolved server-side from the DIR id. operationId: listDirPhoneNumberBatchesSimplified tags: - Phone Number Batches parameters: - $ref: '#/components/parameters/DirId' - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' - name: filter[status] in: query required: false description: Restrict to batches whose aggregate status equals this value. schema: $ref: '#/components/schemas/PhoneNumberStatus' responses: '200': description: Paginated list of batches. content: application/json: schema: $ref: '#/components/schemas/PhoneNumberBatchList' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/phone_number_batches/{batch_id}: get: summary: Get a phone-number batch description: Get a single phone-number batch by id. The enterprise is resolved server-side from the DIR id. operationId: getDirPhoneNumberBatchSimplified tags: - Phone Number Batches parameters: - $ref: '#/components/parameters/DirId' - name: batch_id in: path required: true description: The batch id (lowercase UUID). schema: type: string format: uuid example: 0a4b1f5e-2f12-4c0c-9a98-9b3a7d8b8e62 responses: '200': description: Batch. content: application/json: schema: $ref: '#/components/schemas/PhoneNumberBatchWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/phone_numbers: delete: summary: Remove phone numbers from a DIR description: Deregister phone numbers from a DIR. The enterprise is resolved server-side from the DIR id. Returns a partial-success envelope. operationId: deleteDirPhoneNumbersSimplified tags: - Phone Numbers parameters: - $ref: '#/components/parameters/DirId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BulkDeletePhoneNumbersRequest' example: phone_numbers: - '+19493253498' responses: '200': description: Bulk-delete response. Inspect both `deleted` and `errors`. content: application/json: schema: $ref: '#/components/schemas/PhoneNumberBulkDeleteResponse' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' get: summary: List phone numbers attached to a DIR description: List the phone numbers registered under a DIR. The enterprise is resolved server-side from the DIR id. operationId: listDirPhoneNumbersSimplified tags: - Phone Numbers parameters: - $ref: '#/components/parameters/DirId' - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' responses: '200': description: Paginated list of phone numbers. content: application/json: schema: $ref: '#/components/schemas/PhoneNumberList' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' post: summary: Add phone numbers to a DIR description: 'Register phone numbers under a DIR. The enterprise is resolved server-side from the DIR id. **Pricing:** Adding phone numbers is free. Branded Calling fees are charged per DIR and per branded call. See https://telnyx.com/pricing/branded-calling for current pricing.' operationId: addDirPhoneNumbersSimplified tags: - Phone Numbers parameters: - $ref: '#/components/parameters/DirId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BulkAddPhoneNumbersRequest' example: phone_numbers: - '+19493253498' - '+12134445566' documents: - document_id: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c document_type: letter_of_authorization description: LOA authorising Telnyx to register these numbers under the DIR. responses: '201': description: Bulk-add response. Inspect both `added` and `errors`. content: application/json: schema: $ref: '#/components/schemas/PhoneNumberBulkResponse' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/references: get: tags: - DIR References summary: List a DIR's references operationId: listDirReferences description: 'List the business and financial references submitted for a DIR. Returns the two business references (slots 1 and 2) followed by the single financial reference. Each entry carries its `ref_type` and `slot`, which together address the reference when updating it, alongside the details supplied when it was submitted (name, title, organization, relationship, phone, email, timezone). No internal identifiers are exposed. Returns an empty list when no references were submitted.' parameters: - $ref: '#/components/parameters/DirId' responses: '200': description: The DIR's references. content: application/json: schema: $ref: '#/components/schemas/ReferenceList' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' post: tags: - DIR References summary: Submit a DIR's references operationId: submitDirReferences description: 'Submit the two business references and one financial reference for a DIR. References (two business references and one financial reference) are needed only if the documents uploaded with the DIR don''t already prove the business is legitimate and financially stable. Any one of these is enough proof: audited or certified financial statements (uploaded as `other`, with a description), a commercial credit report (uploaded as `business_credit_report`), or references. Telnyx reviewers decide during vetting whether your documents are enough. References can''t be changed while the DIR is `verified`. Update the DIR first, which returns it to draft. The request body carries exactly two business references plus one financial reference. The first submission stores them and returns `201`. Resubmitting returns `200`: identical values are simply confirmed and nothing is written, while changed values replace those references. A replaced reference''s pending verification call is cancelled and its dial-in code stops working, and the replacement contact is emailed fresh scheduling details. References whose details did not change keep their existing call, code, and the notice already sent to them. The response always echoes the stored references in the same shape as the GET. Who qualifies: the two business references confirm the company''s reputation and operations. Each should be a senior contact at an organization the business works with, such as a vendor, partner, or client: a C-suite executive (CEO, CFO, CTO, COO), an owner or founder as reflected in the company''s corporate records, or a senior manager, director, or executive. The financial reference confirms the company pays its bills and should be 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.' parameters: - $ref: '#/components/parameters/DirId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReferenceSubmissionRequest' responses: '200': description: Resubmit accepted. Identical values were confirmed unchanged, or changed values replaced those references. content: application/json: schema: $ref: '#/components/schemas/ReferenceList' '201': description: The stored references. content: application/json: schema: $ref: '#/components/schemas/ReferenceList' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '409': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/references/{ref_type}/{slot}: patch: tags: - DIR References summary: Update a DIR reference operationId: updateDirReference description: 'Partially update one reference, addressed by the DIR id plus the reference''s type (business or financial) and slot. Cosmetic fields (full name, job title, organization, relationship, email) are always editable. The phone number and timezone may only be changed while a scheduled call has not yet been dialed; if a call is in progress or all attempts are complete, those fields are locked. Changing the timezone reschedules any pending call into the new local calling window.' parameters: - $ref: '#/components/parameters/DirId' - name: ref_type in: path required: true description: Reference type to address. schema: type: string enum: - business - financial example: business - name: slot in: path required: true description: Reference slot, counting from 1. Business references are slots 1 and 2, matching the order they were sent in the `business_references` array; the financial reference is slot 1. Every reference returned by the submit and list endpoints carries its own `ref_type` and `slot`, so you do not need to derive them. schema: type: integer minimum: 1 maximum: 2 example: 1 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReferenceUpdateRequest' responses: '200': description: The updated reference. content: application/json: schema: $ref: '#/components/schemas/ReferenceWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/submit: post: summary: Submit a DIR for vetting description: 'Submit a DIR for vetting. Sends the DIR back through the vetting cycle from any non-terminal status. When re-submitting from `suspended` or `expired`, the DIR''s previous Branded Calling registration is torn down transactionally and its phone numbers flip back to `submitted`. When re-submitting from `verified`, the existing registration stays live throughout the new vetting cycle. Returns `400` from `submitted`/`in_review`/`permanently_rejected`. Returns `400` if the DIR has an unresolved infringement claim.' operationId: submitDirSimple tags: - Display Identity Records parameters: - $ref: '#/components/parameters/DirId' responses: '200': description: DIR submitted. content: application/json: schema: $ref: '#/components/schemas/DirWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/verify_email: get: tags: - Email Verification summary: Get email-ownership verification status operationId: getDirEmailVerificationStatus description: Whether the DIR's current authorizer email has been verified. parameters: - $ref: '#/components/parameters/DirId' responses: '200': description: The current verification state. content: application/json: schema: $ref: '#/components/schemas/EmailVerificationStatusWrapped' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' post: tags: - Email Verification summary: Send an email-ownership verification code operationId: requestDirEmailVerification description: 'Email a 6-digit code to the DIR''s authorizer email to confirm ownership of that address. The code goes to the authorizer, not to the caller. If the authorizer is someone else (for example a client''s executive), that person has to share the code with whoever is completing setup. How long the code lasts: 15 minutes by default. 8 hours when the DIR has a call center (BPO) linked through `bpo_authorizations` whose authorization is pending review or approved (a rejected authorization does not count). Link the call center before you send the code: a code sent before the link keeps the 15-minute window, and a code sent after the link lasts 8 hours. The email states the window, and `expires_at` in the response always shows the exact expiry. To resend, call this endpoint again. Each send issues a fresh code and invalidates the previous one. Sends are limited to one every 60 seconds and 10 per DIR per UTC day. A throttled send returns `429` with `retry_after_secs` and `sends_remaining_today` in the error `meta`. Submit the code to `POST /dir/{dir_id}/verify_email/confirm`.' parameters: - $ref: '#/components/parameters/DirId' responses: '200': description: A code was emailed; the current verification state is returned. content: application/json: schema: $ref: '#/components/schemas/EmailVerificationStatusWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '429': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '503': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /dir/{dir_id}/verify_email/confirm: post: tags: - Email Verification summary: Confirm an email-ownership verification code operationId: confirmDirEmailVerification description: 'Submit the 6-digit code that was emailed to the DIR''s authorizer email. On success the authorizer email is marked verified. For security, any failure (wrong, expired, already-used, or too many attempts) returns the same generic message.' parameters: - $ref: '#/components/parameters/DirId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailVerificationConfirmRequest' responses: '200': description: The authorizer email is verified. content: application/json: schema: $ref: '#/components/schemas/EmailVerificationStatusWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /document_links: get: summary: List all document links description: List all documents links ordered by created_at descending. operationId: ListDocumentLinks x-latency-category: responsive tags: - Documents parameters: - $ref: '#/components/parameters/FilterDocumentLinksConsolidated' - $ref: '#/components/parameters/documents_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DocServiceDocumentLink' 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' /documents: get: summary: List all documents description: List all documents ordered by created_at descending. operationId: ListDocuments x-latency-category: responsive tags: - Documents parameters: - $ref: '#/components/parameters/FilterDocumentsConsolidated' - $ref: '#/components/parameters/SortDocumentsConsolidated' - $ref: '#/components/parameters/documents_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DocServiceDocument' 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' post: summary: Upload a document description: Upload a document.

Uploaded files must be linked to a service within 30 minutes or they will be automatically deleted. operationId: CreateDocument x-latency-category: responsive tags: - Documents requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateDocServiceDocumentRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateMultiPartDocServiceDocumentRequest' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocServiceDocument' '422': $ref: '#/components/responses/documents_UnprocessableEntity' default: $ref: '#/components/responses/documents_GenericErrorResponse' /documents/{id}: delete: summary: Delete a document description: Delete a document.

A document can only be deleted if it's not linked to a service. If it is linked to a service, it must be unlinked prior to deleting. operationId: DeleteDocument x-latency-category: responsive tags: - Documents parameters: - $ref: '#/components/parameters/Id' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocServiceDocument' '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' get: summary: Retrieve a document description: Returns the details of a single document on your account, including its metadata. operationId: RetrieveDocument x-latency-category: responsive tags: - Documents parameters: - $ref: '#/components/parameters/Id' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocServiceDocument' '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' patch: summary: Update a document description: Updates the specified document's attributes and returns the updated document. operationId: UpdateDocument x-latency-category: responsive tags: - Documents parameters: - $ref: '#/components/parameters/Id' requestBody: content: application/json: schema: $ref: '#/components/schemas/DocServiceDocument' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocServiceDocument' '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' /documents/{id}/download: get: summary: Download a document description: Downloads the raw file content of the specified document as originally uploaded. operationId: DownloadDocument x-latency-category: responsive tags: - Documents parameters: - $ref: '#/components/parameters/Id' responses: '200': description: Successful response content: '*': schema: type: string format: binary example: string '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' /documents/{id}/download_link: get: summary: Generate a temporary download link for a document description: Generates a temporary pre-signed URL that can be used to download the document directly from the storage backend without authentication. operationId: getDocumentDownloadLink x-latency-category: responsive tags: - Documents parameters: - name: id in: path required: true description: Uniquely identifies the document schema: type: string format: uuid example: 550e8400-e29b-41d4-a716-446655440000 responses: '200': description: Successfully generated download link content: application/json: schema: type: object required: - data properties: data: type: object required: - url properties: url: type: string format: uri description: Pre-signed temporary URL for downloading the document example: https://s3.amazonaws.com/bucket/path/to/document?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=... '404': $ref: '#/components/responses/ResourceNotFound' '422': $ref: '#/components/responses/documents_UnprocessableEntity' default: $ref: '#/components/responses/documents_GenericErrorResponse' /dynamic_emergency_addresses: get: summary: List dynamic emergency addresses description: Returns the dynamic emergency addresses according to filters operationId: ListDynamicEmergencyAddresses tags: - Dynamic Emergency Addresses parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[country_code]' schema: type: object properties: status: type: string enum: - pending - activated - rejected description: Filter by status. country_code: type: string description: Filter by country code. - $ref: '#/components/parameters/emergency_PageConsolidated' responses: '200': description: Dynamic Emergency Address Responses content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DynamicEmergencyAddress' meta: $ref: '#/components/schemas/Metadata' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' post: summary: Create a dynamic emergency address. description: Creates a dynamic emergency address, the validated physical location used when provisioning dynamic emergency endpoints. operationId: CreateDynamicEmergencyAddress tags: - Dynamic Emergency Addresses requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DynamicEmergencyAddress' responses: '201': description: Dynamic Emergency Address Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DynamicEmergencyAddress' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' /dynamic_emergency_addresses/{id}: delete: summary: Delete a dynamic emergency address description: Deletes the dynamic emergency address based on the ID provided operationId: DeleteDynamicEmergencyAddress tags: - Dynamic Emergency Addresses parameters: - name: id in: path description: Dynamic Emergency Address id required: true schema: type: string format: uuid responses: '200': description: Dynamic Emergency Address Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DynamicEmergencyAddress' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' get: summary: Get a dynamic emergency address description: Returns the dynamic emergency address based on the ID provided operationId: GetDynamicEmergencyAddress tags: - Dynamic Emergency Addresses parameters: - name: id in: path description: Dynamic Emergency Address id required: true schema: type: string format: uuid responses: '200': description: Dynamic Emergency Address Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DynamicEmergencyAddress' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' /dynamic_emergency_endpoints: get: summary: List dynamic emergency endpoints description: Returns the dynamic emergency endpoints according to filters operationId: ListDynamicEmergencyEndpoints tags: - Dynamic Emergency Endpoints parameters: - $ref: '#/components/parameters/emergency_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[country_code]' schema: type: object properties: status: type: string enum: - pending - activated - rejected description: Filter by status. country_code: type: string description: Filter by country code. responses: '200': description: Dynamic Emergency Endpoints Responses content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DynamicEmergencyEndpoint' meta: $ref: '#/components/schemas/Metadata' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' post: summary: Create a dynamic emergency endpoint. description: Creates a dynamic emergency endpoint, associating a callback number and location with a device for emergency calling. operationId: CreateDynamicEmergencyEndpoint tags: - Dynamic Emergency Endpoints requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DynamicEmergencyEndpoint' responses: '201': description: Dynamic Emergency Endpoint Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DynamicEmergencyEndpoint' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' /dynamic_emergency_endpoints/{id}: delete: summary: Delete a dynamic emergency endpoint description: Deletes the dynamic emergency endpoint based on the ID provided operationId: DeleteDynamicEmergencyEndpoint tags: - Dynamic Emergency Endpoints parameters: - name: id in: path description: Dynamic Emergency Endpoint id required: true schema: type: string format: uuid responses: '200': description: Dynamic Emergency Endpoint Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DynamicEmergencyEndpoint' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' get: summary: Get a dynamic emergency endpoint description: Returns the dynamic emergency endpoint based on the ID provided operationId: GetDynamicEmergencyEndpoint tags: - Dynamic Emergency Endpoints parameters: - name: id in: path description: Dynamic Emergency Endpoint id required: true schema: type: string format: uuid responses: '200': description: Dynamic Emergency Endpoint Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DynamicEmergencyEndpoint' '400': $ref: '#/components/responses/emergency_BadRequestResponse' '401': $ref: '#/components/responses/emergency_UnauthorizedResponse' '404': $ref: '#/components/responses/emergency_NotFoundResponse' '422': $ref: '#/components/responses/emergency_UnprocessableEntity' '500': $ref: '#/components/responses/emergency_GenericErrorResponse' /email_blocks: get: tags: - Email Suppressions summary: List suppressions description: "Account-scoped list. Two mutually exclusive pagination modes:\n\n - **Offset**: `page[number]` (default\ \ 1) + `page[size]`\n (default 25, max 100). `meta` contains `total_pages`.\n - **Cursor**: `page[after]` and/or\ \ `page[before]` (opaque\n `Base.url_encode64` of `{\"created_at\",\"id\"}`). Cannot combine\n with `page[number]`;\ \ `after`+`before` together is an error.\n `meta` contains `next_cursor` / `previous_cursor` (omitted when\n \ \ their flag is false).\n\nSort defaults to `-created_at` (desc); only `created_at` is sortable.\nA `--` prefix is\ \ an error. `nil`/empty filter values are silently dropped.\n" operationId: listEmailBlocks parameters: - $ref: '#/components/parameters/BlocksPageNumber' - $ref: '#/components/parameters/BlocksPageSize' - $ref: '#/components/parameters/BlocksPageAfter' - $ref: '#/components/parameters/BlocksPageBefore' - $ref: '#/components/parameters/SortEmailBlocks' - $ref: '#/components/parameters/FilterReason' - $ref: '#/components/parameters/FilterDomainId' - $ref: '#/components/parameters/FilterCreatedAfter' - $ref: '#/components/parameters/FilterCreatedBefore' responses: '200': description: List of suppressions. content: application/json: schema: oneOf: - $ref: '#/components/schemas/EmailBlockListOffsetResponse' - $ref: '#/components/schemas/EmailBlockListCursorResponse' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '400': $ref: '#/components/responses/ValidationErrorQuery' '401': $ref: '#/components/responses/email_Unauthorized' '406': $ref: '#/components/responses/FrameworkError' post: tags: - Email Suppressions summary: Create a manual suppression description: 'Creates a suppression with `reason: manual_block` and `source: manual`. Caller-supplied `reason` / `source` are **ignored**; `scope` is **derived** server-side from `domain_id` / `from` and is never trusted. Idempotent: if a matching row already exists (NULL-safe dedupe key: account_id, scope, to, reason, domain_id, from), returns the existing record with `200` (no new audit event). `bounce_category`, `dsn_code`, `meta`, and `group_id` are **not accepted** on the public surface. Use the unsubscribe-group suppression endpoint or the internal create surface for those. ' operationId: createEmailBlock requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailBlockRequest' example: to: spammer@bad.tld expires_at: '2026-12-31T23:59:59Z' responses: '201': description: Created. content: application/json: schema: $ref: '#/components/schemas/EmailBlockResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' '200': description: Idempotent — matching suppression already existed. content: application/json: schema: $ref: '#/components/schemas/EmailBlockResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_Unauthorized' '406': $ref: '#/components/responses/FrameworkError' '422': $ref: '#/components/responses/ChangesetError' /email_blocks/export: get: tags: - Email Suppressions summary: Export suppressions as CSV description: 'Streams the account''s suppressions as a chunked CSV (server-side cursor; never materialized). Content-type `text/csv`, header `Content-Disposition: attachment; filename="email_blocks_export.csv"`. Filters (`filter[reason]`, `filter[domain_id]`, `filter[created_after]`, `filter[created_before]`) are the only params that affect output. `sort` and `page[*]` are **parsed** (bad values still produce `400`) but **ignored** — rows stream `ORDER BY created_at ASC, id ASC` with no pagination. CSV columns: `id,to,from,reason,source,scope,status,domain_id, created_at,updated_at,expires_at,group_id,bounce_category,dsn_code, meta` (15 columns). The first 12 columns are the stable native signature; `bounce_category`, `dsn_code`, and `meta` are optional backup fields (empty when unset). The CSV carries the `group_id` column so group-scoped suppressions'' group link survives the export (empty for account-scope rows). ' operationId: exportEmailBlocks parameters: - $ref: '#/components/parameters/SortEmailBlocks' - $ref: '#/components/parameters/BlocksPageNumber' - $ref: '#/components/parameters/BlocksPageSize' - $ref: '#/components/parameters/FilterReason' - $ref: '#/components/parameters/FilterDomainId' - $ref: '#/components/parameters/FilterCreatedAfter' - $ref: '#/components/parameters/FilterCreatedBefore' responses: '200': description: CSV stream. content: text/csv: schema: type: string description: CSV with header row `id,to,from,reason,source,scope,status,domain_id,created_at,updated_at,expires_at,group_id,bounce_category,dsn_code,meta`. example: string '400': $ref: '#/components/responses/ValidationErrorQuery' '401': $ref: '#/components/responses/email_Unauthorized' '406': $ref: '#/components/responses/FrameworkError' /email_blocks/import: post: tags: - Email Suppression Imports summary: Create an async CSV import job description: "Accepts `multipart/form-data` with a `file` field (the CSV) and an\noptional `block_ttl_days` (integer\ \ >0, default 30). Validates:\n - content ≤ 25 MiB, else `413`\n - row count ≤ 250 000, else `413`\n - header-only\ \ / all-blank / undetectable provider → `400`\nReturns `202` with the import record (status `pending`); an Oban\n\ worker (`EmailBlockImportWorker`, max_attempts 3) transitions\n`pending → processing → completed | failed`.\n\nNative\ \ Telnyx exports are detected by the stable first-12-column\nheader signature (`id` … `group_id`) and are restored\ \ with their\noriginal `from`, `domain_id`, `group_id`, `source`, `status`,\n`expires_at`, plus `bounce_category`,\ \ `dsn_code`, and `meta` when\npresent (`scope` is re-derived from `domain_id`/`from`; the\nexported `scope` cell\ \ must be a valid enum value). Lifecycle\nchanges reconcile through the same create path as the API: a row\nalready\ \ in the requested state restores its mutable backup fields\nwithout a new audit event, and a real transition (e.g.\ \ tombstone\n→ active) appends the matching lifecycle event. `block_ttl_days`\nis not applied to native rows — their\ \ exported `expires_at` is\npreserved verbatim.\n\nCompetitor and generic imports (SendGrid / Mailgun / SES /\ngeneric)\ \ remain account-scoped (`from`, `domain_id`, `group_id`,\n`scope` are not read) and `block_ttl_days` applies only\ \ to\nimported `manual_block` rows; other reasons get `expires_at: nil`.\nProvider is auto-detected from the CSV header\n\ (`sendgrid` / `mailgun` / `ses` / `generic`).\n" operationId: createEmailBlockImport requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/CreateImportRequest' example: file: blocks.csv block_ttl_days: 30 responses: '202': description: Import job accepted (status `pending`). content: application/json: schema: $ref: '#/components/schemas/EmailBlockImportResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block_import status: pending total: 0 provider: sendgrid created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' completed_at: '2024-01-23T18:10:02.574Z' processed_rows: 0 created_count: 0 existing_count: 0 skipped_count: 0 error_count: 0 failure_reason: string '400': $ref: '#/components/responses/ValidationErrorQuery' '401': $ref: '#/components/responses/email_Unauthorized' '406': $ref: '#/components/responses/FrameworkError' '413': description: 'Two distinct 413 paths. Content-level cap (decoded CSV > 25 MiB or > 250 000 rows) returns `10015` with `source.pointer /file`. The multipart parser raises `RequestTooLargeError` when the encoded body exceeds 26 MiB — that''s a framework error rendered with body `code: "413"` (matches the HTTP status). ' content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. '422': $ref: '#/components/responses/ChangesetError' '500': description: Import-create fallback (`code 10019`, "Failed to create import"). content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. /email_blocks/import/{id}: get: tags: - Email Suppression Imports summary: Poll an import job description: 'Account-scoped fetch (cross-account → 404; malformed UUID → 404). Nullable fields are omitted until terminal: `provider`/`completed_at` when nil; `processed_rows`/`created_count`/`existing_count`/ `skipped_count`/`error_count` only when `status == completed`; `errors` only when non-empty; `failure_reason` only on terminal failure. ' operationId: showEmailBlockImport responses: '200': description: The import record. content: application/json: schema: $ref: '#/components/schemas/EmailBlockImportResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block_import status: pending total: 0 provider: sendgrid created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' completed_at: '2024-01-23T18:10:02.574Z' processed_rows: 0 created_count: 0 existing_count: 0 skipped_count: 0 error_count: 0 failure_reason: string '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' parameters: - $ref: '#/components/parameters/PathId' /email_blocks/{id}: delete: tags: - Email Suppressions summary: Soft-delete a suppression description: 'Soft-deletes (status → `removed`; tombstone retained). A `removed` audit event is appended unless the block was already `removed` (idempotent — returns the existing row with `200` and no new event). Mutates `updated_at`. ' operationId: deleteEmailBlock responses: '200': description: The post-deletion record (status `removed`). content: application/json: schema: $ref: '#/components/schemas/EmailBlockResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' '422': $ref: '#/components/responses/ChangesetError' get: tags: - Email Suppressions summary: Retrieve a suppression operationId: showEmailBlock responses: '200': description: The suppression. content: application/json: schema: $ref: '#/components/schemas/EmailBlockResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' description: Returns the account-owned suppression identified by ID. Cross-account lookups and malformed IDs return `404` without exposing another account’s data. parameters: - $ref: '#/components/parameters/PathId' /email_blocks/{id}/events: get: tags: - Email Suppressions summary: List audit events for a suppression description: 'Offset pagination only (`page[number]` default 1, `page[size]` default **50**, max 100). No `sort`, no `filter`, no cursor — ordering is fixed `desc occurred_at, desc id`. Verifies the block belongs to the account first (cross-account → 404). ' operationId: listEmailBlockEvents parameters: - $ref: '#/components/parameters/BlocksPageNumber' - name: page[size] in: query description: Page size (default 50, max 100). schema: type: integer minimum: 1 maximum: 100 default: 50 responses: '200': description: Audit events (newest-first). content: application/json: schema: $ref: '#/components/schemas/EmailBlockEventListResponse' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block_event event_type: created reason: string source: string actor: string occurred_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '400': $ref: '#/components/responses/ValidationErrorQuery' '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' parameters: - $ref: '#/components/parameters/PathId' /email_domains: get: tags: - Email Domains summary: List email domains operationId: listEmailDomains parameters: - $ref: '#/components/parameters/email_PageNumber' - $ref: '#/components/parameters/DomainsPageSize' - $ref: '#/components/parameters/PageAfter' - $ref: '#/components/parameters/PageBefore' - name: sort in: query description: Field to sort by. Prefix with `-` for descending order. required: false schema: type: string enum: - created_at - -created_at - domain - -domain - updated_at - -updated_at - name: filter[status] description: 'Filter domains by verification status: pending, verifying, verified, failed, degraded, or suspended.' in: query required: false schema: $ref: '#/components/schemas/EmailDomainStatus' - name: filter[domain] in: query required: false description: Partial match on domain name (case-insensitive) schema: type: string example: example.com - name: filter[profile_id] in: query required: false description: Filter by profile UUID schema: type: string format: uuid - name: filter[type] description: 'Filter domains by type: custom, shared, or shared_inbound.' in: query required: false schema: $ref: '#/components/schemas/EmailDomainType' - name: filter[usable_for_sending] description: Filter domains by whether they can currently be used to send email. in: query required: false schema: type: boolean - name: filter[usable_for_inbound] description: Filter domains by whether they can currently receive inbound email. in: query required: false schema: type: boolean responses: '200': description: A paginated list of email domains content: application/json: schema: $ref: '#/components/schemas/EmailDomainListResponse' '400': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' description: 'Shared (`type: shared`) Telnyx-managed domains are included/readable for every account, in addition to the account''s own custom domains.' post: tags: - Email Domains summary: Create an email domain operationId: createEmailDomain requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailDomainRequest' example: domain: example.com inbound_enabled: true tracking: open_tracking: true click_tracking: true unsubscribe_tracking: false responses: '201': description: Email domain created content: application/json: schema: $ref: '#/components/schemas/EmailDomainResponse' '422': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' description: Registers a domain for email sending and optional inbound delivery. The response includes the domain configuration and current verification state. /email_domains/{domain_id}/dns_records: get: tags: - Email Domain DNS Records summary: List DNS records for an email domain operationId: listEmailDomainDnsRecords parameters: - $ref: '#/components/parameters/EmailDomainDomainId' responses: '200': description: DNS records for the email domain content: application/json: schema: $ref: '#/components/schemas/DNSRecordListResponse' '404': $ref: '#/components/responses/email_NotFound' '500': $ref: '#/components/responses/InternalServerError' description: Returns the DNS records Telnyx generated for domain ownership and DKIM verification, plus MX records when inbound delivery is enabled. /email_domains/{domain_id}/rotate_dkim: post: tags: - Email Domains summary: Rotate the DKIM key for an email domain description: 'Generates a new DKIM key for the domain, activates it, and retires the previous key. The response includes the updated DKIM DNS records the customer must publish. Selectors are fixed, so rotation replaces the TXT value at the existing `._domainkey.` host rather than adding a second record — `old_selector_retained` is false and the new TXT value must be published promptly, since signing switches to the new key immediately and the old TXT value will no longer match. The previous key is retired to a `retiring` state (retained, not revoked) so it can be revoked after the DNS propagation grace period. ' operationId: rotateEmailDomainDKIMKey parameters: - $ref: '#/components/parameters/EmailDomainDomainId' responses: '201': description: DKIM key rotated content: application/json: schema: $ref: '#/components/schemas/EmailDomainDKIMRotationResponse' example: data: 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 '403': description: 'Forbidden — shared email domains are managed by Telnyx and cannot have their DKIM keys rotated by this account. ' content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' example: errors: - code: '10008' title: Forbidden detail: Shared email domains are managed by Telnyx and cannot have their DKIM keys rotated by this account '404': $ref: '#/components/responses/email_NotFound' '409': description: DKIM rotation conflicted with a concurrent operation on this domain. Safe to retry. content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' example: errors: - code: '40901' title: Conflict detail: DKIM rotation conflicted with a concurrent operation on this domain. Safe to retry. '422': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' /email_domains/{domain_id}/verify: post: tags: - Email Domain DNS Records summary: Verify DNS records for an email domain operationId: verifyEmailDomainDnsRecords parameters: - $ref: '#/components/parameters/EmailDomainDomainId' responses: '200': description: Updated email domain with latest DNS verification results content: application/json: schema: $ref: '#/components/schemas/EmailDomainResponse' '404': $ref: '#/components/responses/email_NotFound' '422': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' '403': description: Forbidden — shared domains are read-only for non-owner accounts (error code 10008). content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' description: Checks the published DNS records against the records required for the email domain and returns the latest verification results. /email_domains/{domain_id}/webhooks: get: tags: - Email Webhooks summary: List webhooks for an email domain operationId: listEmailDomainWebhooks parameters: - $ref: '#/components/parameters/EmailDomainDomainId' - $ref: '#/components/parameters/email_PageNumber' - $ref: '#/components/parameters/DomainsPageSize' - name: sort in: query description: Field to sort by. Prefix with `-` for descending order. required: false schema: type: string enum: - created_at - -created_at responses: '200': description: A paginated list of email webhooks content: application/json: schema: $ref: '#/components/schemas/EmailWebhookListResponse' '404': $ref: '#/components/responses/email_NotFound' '500': $ref: '#/components/responses/InternalServerError' description: Returns a paginated list of webhook subscriptions scoped to the email domain. Results can be sorted by creation time. post: tags: - Email Webhooks summary: Create a webhook for an email domain description: 'Creates a webhook endpoint subscribed to a specific allowlist of event types. Both `email.*` events (published by email-api) and `email_domain.*` events (published by this service) flow through the same webhooks. ' operationId: createEmailDomainWebhook parameters: - $ref: '#/components/parameters/EmailDomainDomainId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailWebhookRequest' example: url: https://example.com/webhooks/email events: - email.sent - email.delivered - email.bounced responses: '201': description: Email webhook created content: application/json: schema: $ref: '#/components/schemas/EmailWebhookResponse' '404': $ref: '#/components/responses/email_NotFound' '422': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' /email_domains/{domain_id}/webhooks/{id}: delete: tags: - Email Webhooks summary: Delete a webhook operationId: deleteEmailDomainWebhook parameters: - $ref: '#/components/parameters/EmailDomainDomainId' - $ref: '#/components/parameters/WebhookId' responses: '200': description: Email webhook deleted content: application/json: schema: $ref: '#/components/schemas/EmailWebhookResponse' '404': $ref: '#/components/responses/email_NotFound' '500': $ref: '#/components/responses/InternalServerError' description: Deletes the webhook subscription identified by ID within the specified email domain and returns the deleted subscription. get: tags: - Email Webhooks summary: Retrieve a webhook operationId: getEmailDomainWebhook parameters: - $ref: '#/components/parameters/EmailDomainDomainId' - $ref: '#/components/parameters/WebhookId' responses: '200': description: Email webhook details content: application/json: schema: $ref: '#/components/schemas/EmailWebhookResponse' '404': $ref: '#/components/responses/email_NotFound' '500': $ref: '#/components/responses/InternalServerError' description: Returns the webhook subscription identified by ID within the specified email domain. patch: tags: - Email Webhooks summary: Update a webhook description: 'Update a webhook''s URL and/or event subscription. A webhook is bound to its domain — `domain_id` is not mutable. ' operationId: updateEmailDomainWebhook parameters: - $ref: '#/components/parameters/EmailDomainDomainId' - $ref: '#/components/parameters/WebhookId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateEmailWebhookRequest' example: events: - email.sent - email.delivered - email.opened responses: '200': description: Email webhook updated content: application/json: schema: $ref: '#/components/schemas/EmailWebhookResponse' '404': $ref: '#/components/responses/email_NotFound' '422': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' /email_domains/{id}: delete: tags: - Email Domains summary: Delete an email domain operationId: deleteEmailDomain parameters: - $ref: '#/components/parameters/EmailDomainId' - name: force in: query required: false description: Required as true when deleting verified domains schema: type: boolean default: false responses: '200': description: Email domain deleted content: application/json: schema: $ref: '#/components/schemas/EmailDomainResponse' '404': $ref: '#/components/responses/email_NotFound' '422': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' '403': description: Forbidden — shared domains are read-only for non-owner accounts (error code 10008). content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' description: Deletes an email domain configuration. Verified domains require `force=true`, and shared domains are read-only for non-owner accounts. get: tags: - Email Domains summary: Retrieve an email domain operationId: getEmailDomain parameters: - $ref: '#/components/parameters/EmailDomainId' responses: '200': description: Email domain details content: application/json: schema: $ref: '#/components/schemas/EmailDomainResponse' '404': $ref: '#/components/responses/email_NotFound' '500': $ref: '#/components/responses/InternalServerError' description: 'Shared (`type: shared`) Telnyx-managed domains are included/readable for every account, in addition to the account''s own custom domains.' patch: tags: - Email Domains summary: Update an email domain operationId: updateEmailDomain parameters: - $ref: '#/components/parameters/EmailDomainId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateEmailDomainRequest' example: inbound_enabled: true tracking: open_tracking: false responses: '200': description: Email domain updated content: application/json: schema: $ref: '#/components/schemas/EmailDomainResponse' '404': $ref: '#/components/responses/email_NotFound' '422': $ref: '#/components/responses/ValidationFailed' '500': $ref: '#/components/responses/InternalServerError' '403': description: Forbidden — shared domains are read-only for non-owner accounts (error code 10008). content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' description: Updates mutable settings for an existing email domain, including inbound delivery and tracking configuration. Shared domains are read-only for non-owner accounts. /email_domains/{id}/health: get: tags: - Email Domains summary: Get domain health summary description: Returns a summary of domain health including verification status and usability. operationId: getEmailDomainHealth parameters: - $ref: '#/components/parameters/EmailDomainId' responses: '200': description: Domain health summary content: application/json: schema: $ref: '#/components/schemas/EmailDomainHealthResponse' example: data: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: email_domain_health status: verified usable_for_sending: true usable_for_inbound: false verification: ownership: verified spf: verified dkim: verified dmarc: missing_optional mx: not_required checked_at: '2026-05-31T12:00:00Z' '404': $ref: '#/components/responses/email_NotFound' '500': $ref: '#/components/responses/InternalServerError' /email_events: get: tags: - Email Events operationId: ListEmailEvents summary: List account email events description: 'Lists account-level email events sorted oldest first by `occurred_at asc, id asc`. Each row contains a legacy email.-prefixed event_type and an additive canonical_event_type. Gateway rejection renders email.failed with canonical email.gw_reject; ambiguous injection timeout renders email.injection_timeout in both; MTA expiration renders email.bounced with canonical email.expired. Message-scoped queued, sending, sandbox, cancelled, and daily_limit_exceeded rows fan out per durable recipient with stable derived IDs matching webhook delivery. Scheduled is the cardinality exception: account polling retains one message-scoped scheduled row with its stored event ID, while scheduled webhook publication fans out per recipient with derived IDs; reconcile scheduled events by message ID, event type, and occurrence time rather than event UUID. Recipient-scoped stored rows retain their stored UUIDs across polling and webhook delivery. Legacy names are derived from stored rows; an AdminBounce row stored as failed renders email.failed in polling while its webhook retains email.bounced, both with canonical email.failed.' parameters: - $ref: '#/components/parameters/email_PageSize' - name: page[cursor] in: query description: Opaque URL-safe Base64 cursor returned by a previous event list response. The legacy `page[after]` and flat `page_cursor` forms are also accepted. required: false schema: type: string example: eyJpbn...EifQ - name: event_type in: query description: 'Comma-separated list of event types to include. Also accepts repeated query parameters (e.g. event_type=delivered&event_type=bounced). Unknown values return no matches. Dual-name compatibility: values are accepted bare or `email.`-prefixed. A legacy value keeps matching the rows it matched pre-rename — no widening: `failed` also matches the rows that now store the canonical names of the outcomes it covered (`gw_reject`, `injection_timeout`, `expired`); `bounced` matches stored `bounced` rows only (recipient-scoped Expirations stored `failed` pre-rename and never matched `bounced`, so `expired` is deliberately not a `bounced` expansion). A canonical value matches its own rows plus legacy rows whose recorded payload evidence proves that outcome (`expired` also surfaces legacy `bounced` rows with `bounce_category: transient`). The additive `canonical_event_type` field in each response row names the canonical outcome. ' required: false schema: oneOf: - type: string - type: array items: type: string example: delivered,bounced,opened - name: email_id in: query description: Filter events for a specific email message UUID. Invalid UUID values are silently ignored (no filter applied). required: false schema: type: string format: uuid - $ref: '#/components/parameters/FromTimestamp' - $ref: '#/components/parameters/ToTimestamp' responses: '200': description: Paginated list of account email events. content: application/json: schema: $ref: '#/components/schemas/AccountEmailEventListResponse' example: data: - id: f3a2c1d0-1234-4abc-9def-67890abcdef0 event_type: email.delivered canonical_event_type: email.delivered occurred_at: '2026-07-06T18:24:00.000Z' recipient_id: 7c1e9a44-2f60-4d1b-9a0e-3c7b5e8d1f22 payload: id: b0c7e8cb-6227-4c74-9f32-c7f80c30934b recipient_id: 7c1e9a44-2f60-4d1b-9a0e-3c7b5e8d1f22 status: delivered occurred_at: '2026-07-06T18:24:00.000Z' from: email: sender@example.com name: Telnyx to: email: recipient@example.com name: null kind: to subject: Welcome meta: page_size: 50 time_range: from: '2026-07-01T00:00:00Z' to: '2026-07-31T00:00:00Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' /email_events/stats: get: tags: - Email Events operationId: GetEmailEventStats summary: Get email event statistics description: Returns counts and rates for email events over a time range. The default start time is 30 days ago. parameters: - $ref: '#/components/parameters/FromTimestamp' - $ref: '#/components/parameters/ToTimestamp' responses: '200': description: Email event statistics. content: application/json: schema: $ref: '#/components/schemas/EmailEventStatsResponse' example: data: record_type: email_event_stats counts: queued: 0 sent: 0 delivered: 0 deferred: 0 bounced: 0 opened: 0 clicked: 0 complained: 0 unsubscribed: 0 failed: 0 rates: delivery_rate: 0 bounce_rate: 0 deferred_rate: 0 open_rate: 0 click_rate: 0 complaint_rate: 0 time_range: from: '2024-01-23T18:10:02.574Z' to: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' /email_inboxes: get: tags: - Email Inboxes operationId: ListEmailInboxes summary: List email inboxes description: Lists the account's non-deleted inboxes newest first using stable cursor pagination. parameters: - name: page_size in: query required: false description: Number of results to return. Defaults to 20; maximum is 250. schema: type: integer minimum: 1 maximum: 250 default: 20 - name: page_cursor in: query required: false description: Opaque cursor returned by the previous inbox page. schema: type: string responses: '200': description: Paginated email inboxes. content: application/json: schema: $ref: '#/components/schemas/EmailInboxListResponse' example: data: - id: 11111111-1111-1111-1111-111111111111 record_type: email_inbox address: agent-1@abc123def456.mail.test.telnyx.com status: active domain_id: 22222222-2222-2222-2222-222222222222 domain: abc123def456.mail.test.telnyx.com settings: {} created_at: '2026-07-12T00:00:00Z' updated_at: '2026-07-12T00:00:00Z' meta: page_size: 20 page_cursor: MjAyNi0wNy0xMlQwMCUzQTAwJTNBMDBafDExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMQ '401': $ref: '#/components/responses/email_UnauthorizedResponse' '422': description: Pagination validation failed (10015). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' examples: invalidPageSize: value: errors: - code: '10015' title: Validation Failed detail: page_size must be between 1 and 250 source: pointer: /page_size invalidPageCursor: value: errors: - code: '10015' title: Validation Failed detail: cursor is invalid or corrupted source: pointer: /page_cursor '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' post: tags: - Email Inboxes operationId: CreateEmailInbox summary: Create an email inbox description: 'Creates an inbox on an inbound-enabled domain. When `domain_id` is omitted, Telnyx allocates the account''s shared inbound subdomain so the inbox is immediately usable without customer DNS setup. When `username` is omitted, a unique username is generated. ' requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/CreateEmailInboxRequest' examples: generatedUsername: value: {} instantInbox: value: username: agent-1 customDomainInbox: value: username: support domain_id: 22222222-2222-2222-2222-222222222222 responses: '201': description: Email inbox created. content: application/json: schema: $ref: '#/components/schemas/EmailInboxResponse' example: data: id: 11111111-1111-1111-1111-111111111111 record_type: email_inbox address: agent-1@abc123def456.mail.test.telnyx.com status: active domain_id: 22222222-2222-2222-2222-222222222222 domain: abc123def456.mail.test.telnyx.com settings: {} created_at: '2026-07-12T00:00:00Z' updated_at: '2026-07-12T00:00:00Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '422': description: Inbox validation failed (10015). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: username must start and end with a letter or digit and may contain only lowercase letters, digits, dots, hyphens, and underscores source: pointer: /data/attributes/username '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' /email_inboxes/{id}: delete: tags: - Email Inboxes operationId: DeleteEmailInbox summary: Delete an email inbox description: Soft-deletes an account-scoped inbox. Its address remains reserved and the inbox is no longer returned by list or get operations. parameters: - name: id in: path required: true description: Email inbox UUID. schema: type: string format: uuid responses: '204': description: Email inbox deleted. The response has no body. '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': description: Email inbox not found, already deleted, or owned by another account (10001). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10001' title: Not Found detail: The requested email_inbox was not found '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' get: tags: - Email Inboxes operationId: GetEmailInbox summary: Get an email inbox description: Returns an account-scoped, non-deleted inbox. Missing and foreign inboxes are indistinguishable. parameters: - name: id in: path required: true description: Email inbox UUID. schema: type: string format: uuid responses: '200': description: Email inbox details. content: application/json: schema: $ref: '#/components/schemas/EmailInboxResponse' example: data: id: 11111111-1111-1111-1111-111111111111 record_type: email_inbox address: agent-1@abc123def456.mail.test.telnyx.com status: active domain_id: 22222222-2222-2222-2222-222222222222 domain: abc123def456.mail.test.telnyx.com settings: {} created_at: '2026-07-12T00:00:00Z' updated_at: '2026-07-12T00:00:00Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': description: Email inbox not found (10001). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10001' title: Not Found detail: The requested email_inbox was not found '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' /email_inboxes/{inbox_id}/drafts: get: tags: - Email Drafts operationId: ListEmailDrafts summary: List drafts in an inbox description: 'Lists drafts newest first using stable cursor pagination. All access is scoped to the authenticated account and the given inbox. ' parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: filter[status] in: query required: false description: Restrict results to drafts in this state. schema: type: string enum: - draft - sending - sent - name: page[size] in: query required: false description: Number of results to return. Defaults to 25; maximum is 100. schema: type: integer minimum: 1 maximum: 100 default: 25 - name: page[after] in: query required: false description: Opaque cursor returned by the previous page. schema: type: string responses: '200': description: Paginated drafts. content: application/json: schema: $ref: '#/components/schemas/EmailDraftListResponse' example: data: - record_type: email_draft id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 inbox_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: draft from: string from_name: string to: - email: string name: string cc: - email: string name: string bcc: - email: string name: string reply_to: string subject: string text_body: string html_body: string attachments: [] labels: - string tags: - string reply_to_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 thread_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: page_size: 1 page_cursor: string '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '503': $ref: '#/components/responses/DraftUnavailableResponse' post: tags: - Email Drafts operationId: CreateEmailDraft summary: Create a draft description: 'Creates an unsent draft in the inbox. Every field is optional — a draft is a work-in-progress and may be saved incomplete. Send-time requirements (sender, subject, at least one recipient) are enforced when the draft is sent, not when it is created. Drafts are unbillable and emit no Email Detail Records until they are sent. ' parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/EmailDraftRequest' example: to: - email: recipient@example.com name: Recipient subject: Quarterly update text_body: Here is the update. labels: - important responses: '201': description: The created draft. content: application/json: schema: $ref: '#/components/schemas/EmailDraftResponse' example: data: record_type: email_draft id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 inbox_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: draft from: string from_name: string to: - email: string name: string cc: - email: string name: string bcc: - email: string name: string reply_to: string subject: string text_body: string html_body: string attachments: [] labels: - string tags: - string reply_to_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 thread_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/DraftUnavailableResponse' /email_inboxes/{inbox_id}/drafts/{draft_id}: delete: tags: - Email Drafts operationId: DeleteEmailDraft summary: Delete a draft description: 'Permanently deletes an unsent draft. Drafts that are being sent or have been sent cannot be deleted; sent drafts are retained for audit. ' parameters: - $ref: '#/components/parameters/DraftInboxId' - $ref: '#/components/parameters/DraftId' responses: '204': description: The draft was deleted. '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': description: The draft is being sent or has already been sent and is retained for audit. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. '503': $ref: '#/components/responses/DraftUnavailableResponse' get: tags: - Email Drafts operationId: GetEmailDraft summary: Retrieve a draft description: 'Returns a single draft. Drafts that have been sent remain retrievable, so the exact content that was sent stays auditable. ' parameters: - $ref: '#/components/parameters/DraftInboxId' - $ref: '#/components/parameters/DraftId' responses: '200': description: The requested draft. content: application/json: schema: $ref: '#/components/schemas/EmailDraftResponse' example: data: record_type: email_draft id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 inbox_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: draft from: string from_name: string to: - email: string name: string cc: - email: string name: string bcc: - email: string name: string reply_to: string subject: string text_body: string html_body: string attachments: [] labels: - string tags: - string reply_to_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 thread_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '503': $ref: '#/components/responses/DraftUnavailableResponse' patch: tags: - Email Drafts operationId: PatchEmailDraft summary: Update a draft (alias) description: Identical to `PUT`; both apply a partial update to the supplied fields. parameters: - $ref: '#/components/parameters/DraftInboxId' - $ref: '#/components/parameters/DraftId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailDraftRequest' example: subject: Quarterly update (revised) text_body: Updated body. responses: '200': description: The updated draft. content: application/json: schema: $ref: '#/components/schemas/EmailDraftResponse' example: data: record_type: email_draft id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 inbox_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: draft from: string from_name: string to: - email: string name: string cc: - email: string name: string bcc: - email: string name: string reply_to: string subject: string text_body: string html_body: string attachments: [] labels: - string tags: - string reply_to_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 thread_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/DraftUnavailableResponse' put: tags: - Email Drafts operationId: UpdateEmailDraft summary: Update a draft description: 'Updates the supplied fields on a draft. `account_id` and `inbox_id` are server-owned and ignored if present in the body, so a draft can never be moved between accounts or inboxes. A draft that is being sent or has already been sent is immutable and returns 422 — modifying it would race with delivery or rewrite the record of what was actually sent. ' parameters: - $ref: '#/components/parameters/DraftInboxId' - $ref: '#/components/parameters/DraftId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmailDraftRequest' example: subject: Quarterly update (revised) text_body: Updated body. responses: '200': description: The updated draft. content: application/json: schema: $ref: '#/components/schemas/EmailDraftResponse' example: data: record_type: email_draft id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 inbox_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: draft from: string from_name: string to: - email: string name: string cc: - email: string name: string bcc: - email: string name: string reply_to: string subject: string text_body: string html_body: string attachments: [] labels: - string tags: - string reply_to_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 thread_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/DraftUnavailableResponse' /email_inboxes/{inbox_id}/drafts/{draft_id}/send: post: tags: - Email Drafts operationId: SendEmailDraft summary: Send a draft description: 'Sends the draft through the standard send pipeline — the same domain resolution, suppression, reputation, daily-quota, persistence and Detail Record behaviour as `POST /v2/email_messages`. The response body is the created email message. If the draft has no explicit `from_email`, the inbox address is used. The draft is marked `sent` only after the send is accepted; a send rejected for suppression, quota or reputation leaves the draft editable so it can be fixed and retried. A draft that is already `sent` returns 422 rather than sending twice. ' parameters: - $ref: '#/components/parameters/DraftInboxId' - $ref: '#/components/parameters/DraftId' responses: '202': description: The draft was accepted for delivery. Returns the created email message. content: application/json: schema: $ref: '#/components/schemas/EmailMessageResponse' '400': description: The draft is missing fields required to send (sender, subject, or recipients). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. '401': $ref: '#/components/responses/email_UnauthorizedResponse' '403': description: The sender domain is not permitted to send. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': description: The draft has already been sent, or failed send-time validation. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: this draft has already been sent source: pointer: /data/attributes/status '429': $ref: '#/components/responses/EmailSendTooManyRequestsResponse' '503': $ref: '#/components/responses/DraftUnavailableResponse' /email_inboxes/{inbox_id}/filters: delete: tags: - Email Inboxes operationId: RemoveEmailInboxFilterEntries summary: Remove sender filter entries from an inbox description: 'Removes entries from either the allowlist or blocklist. The operation is idempotent: removing an entry that is not present still returns the current filter lists. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MutateInboxFiltersRequest' example: type: allowlist entries: - former-partner@example.com responses: '200': $ref: '#/components/responses/InboxFiltersResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' get: tags: - Email Inboxes operationId: ListEmailInboxFilters summary: List sender filters for an inbox description: 'Returns the inbox''s sender allowlist and blocklist. Entries are normalized to lowercase. A blocklist match takes precedence over an allowlist match; when both lists are empty, all senders are accepted. ' responses: '200': $ref: '#/components/responses/InboxFiltersResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' parameters: - $ref: '#/components/parameters/InboxIdPathParam' post: tags: - Email Inboxes operationId: AddEmailInboxFilterEntries summary: Add sender filter entries to an inbox description: 'Adds entries to either the allowlist or blocklist. The operation is an idempotent set union: entries already present remain unchanged. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MutateInboxFiltersRequest' example: type: blocklist entries: - '@spam.example' responses: '200': $ref: '#/components/responses/InboxFiltersResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' put: tags: - Email Inboxes operationId: ReplaceEmailInboxFilters summary: Replace sender filters for an inbox description: 'Replaces both sender filter lists atomically. Omitting either list clears that list. Use `POST` or `DELETE` for incremental changes. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReplaceInboxFiltersRequest' example: allowlist: - trusted@example.com - '@partner.example' blocklist: - '@spam.example' responses: '200': $ref: '#/components/responses/InboxFiltersResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' /email_inboxes/{inbox_id}/messages: get: tags: - Email Inboxes operationId: ListEmailInboxMessages summary: List and search messages in an inbox description: 'Lists inbound messages newest first. All access is scoped to the authenticated account. `filter[search]` performs PostgreSQL full-text search over the subject, plain-text body, and HTML body. Filters compose with stable cursor pagination. ' parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: filter[from] in: query required: false description: Case-insensitive literal substring of the sender address. schema: type: string - name: filter[subject] in: query required: false description: Case-insensitive literal substring of the subject. schema: type: string - name: filter[received_after] in: query required: false description: Inclusive ISO 8601 lower bound for the received timestamp. schema: type: string format: date-time - name: filter[received_before] in: query required: false description: Inclusive ISO 8601 upper bound for the received timestamp. schema: type: string format: date-time - name: filter[read] in: query required: false description: Whether the message has a read timestamp. schema: type: boolean - name: filter[unread] in: query required: false description: Whether the message has no read timestamp. Set to `true` to return only unread messages. schema: type: boolean - name: filter[label] in: query required: false description: Returns only messages carrying this label. Matching is exact and case-sensitive. Reserved `telnyx:` labels can be filtered on even though they cannot be written by customers. schema: type: string maxLength: 255 - name: filter[search] in: query required: false description: Full-text query over subject and body, up to 500 characters. schema: type: string maxLength: 500 - name: page[size] in: query required: false description: Number of results to return. Defaults to 25; maximum is 100. schema: type: integer minimum: 1 maximum: 100 default: 25 - name: page[after] in: query required: false description: Opaque cursor returned by the previous page. schema: type: string responses: '200': description: Paginated inbox messages. content: application/json: schema: $ref: '#/components/schemas/InboundMessageListResponse' 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: [] 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' meta: page_size: 25 page_cursor: MjAyNi0wNy0xNVQxMjozMDowMFp8NTU1NTU1NTUtNTU1NS01NTU1LTU1NTUtNTU1NTU1NTU1NTU1 '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': description: Inbound message storage is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: Inbox messages are temporarily unavailable. Please try again later. /email_inboxes/{inbox_id}/messages/{message_id}: patch: tags: - Email Inboxes operationId: UpdateEmailInboxMessage summary: Update an inbox message description: 'Updates the explicit read state of an account-scoped inbound message. Set `read_at` to `true` to mark the message read at the server''s current time, to an ISO 8601 timestamp to use that timestamp, or to `null` to mark the message unread. Repeating the same update is idempotent. ' parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: message_id in: path required: true description: Inbound email message UUID. schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateInboundMessageRequest' examples: markRead: value: read_at: true markUnread: value: read_at: null explicitTimestamp: value: read_at: '2026-07-23T12:34:56Z' responses: '200': description: Updated inbox message. content: application/json: schema: $ref: '#/components/schemas/InboundMessageResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_message direction: inbound status: received inbox_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 thread_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 message_id: string in_reply_to: string references: - string from: email: example@telnyx.com name: string to: - email: example@telnyx.com name: string cc: - email: example@telnyx.com name: string bcc: - email: example@telnyx.com name: string reply_to: - email: example@telnyx.com name: string subject: string text_body_url: https://example.com html_body_url: https://example.com reply_text: string has_quoted_text: false headers: Message-ID: inline_files: [] attachments: [] labels: - string read_at: '2024-01-23T18:10:02.574Z' received_at: '2024-01-23T18:10:02.574Z' sent_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' /email_inboxes/{inbox_id}/messages/{message_id}/actions/forward: post: tags: - Email Inboxes operationId: ForwardEmailInboxMessage summary: Forward an inbox message description: 'Sends from the inbox address through the standard email send pipeline to caller-supplied To, Cc, and Bcc recipients. `to` must contain at least one recipient. Optional `text` and `html` are prepended to a forwarded-message block containing the original metadata and available body content. The subject is prefixed with `Fwd:` unless it already has that prefix. Threading headers are derived from the original message: `In-Reply-To` is set to its RFC Message-ID, and `References` contains the original References values plus that Message-ID, de-duplicated and limited to the most recent 20 values. ' parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: message_id in: path required: true description: Inbound email message UUID. schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ForwardEmailInboxMessageRequest' example: to: new@example.com cc: - email: copy@example.com bcc: - blind@example.com text: FYI responses: '202': description: Forward accepted by the standard email send pipeline. headers: X-Telnyx-Reputation-Warning: description: Present with `warn` when the accepted send uses a sender domain in the reputation warn band; delivery proceeds with reduced sending limits. schema: type: string enum: - warn content: application/json: schema: $ref: '#/components/schemas/EmailMessageResponse' example: data: record_type: email_message id: 44444444-4444-4444-4444-444444444444 status: queued from: email: agent@inbox.example.test to: - email: new@example.com cc: - email: copy@example.com bcc: - email: blind@example.com reply_to: null subject: 'Fwd: Project update' tags: [] metadata: {} template_id: null template_variables: {} attachments: [] events: [] created_at: '2026-07-15T12:35:00Z' '400': $ref: '#/components/responses/email_BadRequestResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '403': $ref: '#/components/responses/email_ForbiddenResponse' '404': description: The inbox, source message, or sending domain was not found (10001). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' examples: inboxNotFound: value: errors: - code: '10001' title: Not Found detail: The requested email_inbox was not found messageNotFound: value: errors: - code: '10001' title: Not Found detail: The requested email_message was not found '422': description: Forward validation failed (10015), or all recipients are suppressed. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' examples: invalidRecipients: value: errors: - code: '10015' title: Validation Failed detail: to must contain at least one recipient source: pointer: /data/attributes/to allRecipientsSuppressed: value: errors: - code: recipient_suppressed title: Recipient Suppressed detail: All recipients are suppressed. The email was not sent. suppressed: - to: new@example.com reason: hard_bounce scope: account override_allowed: false '429': $ref: '#/components/responses/EmailSendTooManyRequestsResponse' '503': description: Inbox message actions 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: Inbox message actions are temporarily unavailable. Please try again later. /email_inboxes/{inbox_id}/messages/{message_id}/actions/reply: post: tags: - Email Inboxes operationId: ReplyToEmailInboxMessage summary: Reply to an inbox message description: 'Sends from the inbox address through the standard email send pipeline. The recipient is the original `Reply-To`, falling back to `From`; original Cc recipients are not included. The subject is prefixed with `Re:` unless it already has that prefix. Threading headers are derived from the original message: `In-Reply-To` is set to its RFC Message-ID, and `References` contains the original References values plus that Message-ID, de-duplicated and limited to the most recent 20 values. ' parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: message_id in: path required: true description: Inbound email message UUID. schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReplyEmailInboxMessageRequest' examples: plainText: value: text: Thanks for the update. html: value: html:

Thanks for the update.

responses: '202': description: Reply accepted by the standard email send pipeline. headers: X-Telnyx-Reputation-Warning: description: Present with `warn` when the accepted send uses a sender domain in the reputation warn band; delivery proceeds with reduced sending limits. schema: type: string enum: - warn content: application/json: schema: $ref: '#/components/schemas/EmailMessageResponse' example: data: record_type: email_message id: 44444444-4444-4444-4444-444444444444 status: queued from: email: agent@inbox.example.test to: - email: reply@example.com cc: [] bcc: [] reply_to: null subject: 'Re: Project update' tags: [] metadata: {} template_id: null template_variables: {} attachments: [] events: [] created_at: '2026-07-15T12:35:00Z' '400': $ref: '#/components/responses/email_BadRequestResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '403': $ref: '#/components/responses/email_ForbiddenResponse' '404': description: The inbox, source message, or sending domain was not found (10001). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' examples: inboxNotFound: value: errors: - code: '10001' title: Not Found detail: The requested email_inbox was not found messageNotFound: value: errors: - code: '10001' title: Not Found detail: The requested email_message was not found '422': description: Reply validation failed (10015), or all recipients are suppressed. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: text or html must contain a body for reply actions source: pointer: /data/attributes/text '429': $ref: '#/components/responses/EmailSendTooManyRequestsResponse' '503': description: Inbox message actions 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: Inbox message actions are temporarily unavailable. Please try again later. /email_inboxes/{inbox_id}/messages/{message_id}/actions/reply_all: post: tags: - Email Inboxes operationId: ReplyAllToEmailInboxMessage summary: Reply all to an inbox message description: 'Sends from the inbox address through the standard email send pipeline. The To list starts with the original `Reply-To` (or `From`) and includes original To recipients; the Cc list includes original Cc recipients. The inbox address is excluded, and recipients are de-duplicated case-insensitively across To and Cc. Bcc is always empty. The subject is prefixed with `Re:` unless it already has that prefix. Threading headers are derived from the original message: `In-Reply-To` is set to its RFC Message-ID, and `References` contains the original References values plus that Message-ID, de-duplicated and limited to the most recent 20 values. ' parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: message_id in: path required: true description: Inbound email message UUID. schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReplyEmailInboxMessageRequest' examples: plainText: value: text: Everyone, please review. html: value: html:

Everyone, please review.

responses: '202': description: Reply-all message accepted by the standard email send pipeline. headers: X-Telnyx-Reputation-Warning: description: Present with `warn` when the accepted send uses a sender domain in the reputation warn band; delivery proceeds with reduced sending limits. schema: type: string enum: - warn content: application/json: schema: $ref: '#/components/schemas/EmailMessageResponse' example: data: record_type: email_message id: 44444444-4444-4444-4444-444444444444 status: queued from: email: agent@inbox.example.test to: - email: reply@example.com - email: other@example.com cc: [] bcc: [] reply_to: null subject: 'Re: Project update' tags: [] metadata: {} template_id: null template_variables: {} attachments: [] events: [] created_at: '2026-07-15T12:35:00Z' suppressed: - to: observer@example.com reason: hard_bounce scope: account override_allowed: false '400': $ref: '#/components/responses/email_BadRequestResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '403': $ref: '#/components/responses/email_ForbiddenResponse' '404': description: The inbox, source message, or sending domain was not found (10001). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' examples: inboxNotFound: value: errors: - code: '10001' title: Not Found detail: The requested email_inbox was not found messageNotFound: value: errors: - code: '10001' title: Not Found detail: The requested email_message was not found '422': description: Reply-all validation failed (10015), or all recipients are suppressed. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: text or html must contain a body for reply actions source: pointer: /data/attributes/text '429': $ref: '#/components/responses/EmailSendTooManyRequestsResponse' '503': description: Inbox message actions 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: Inbox message actions are temporarily unavailable. Please try again later. /email_inboxes/{inbox_id}/messages/{message_id}/drafts: post: tags: - Email Drafts operationId: CreateEmailReplyDraft summary: Create a reply draft description: 'Creates an unsent reply draft for an inbound message. Unlike the `/actions/reply` endpoint, which sends immediately, this stores a draft that can be reviewed and edited before sending. `reply_to_message_id` and `thread_id` are inherited from the parent message and cannot be set by the caller. The recipient, `Re:` subject and `In-Reply-To`/`References` headers are pre-filled from the parent using the same rules as a live reply, so sending the draft threads identically. Supplying `to` or `subject` explicitly overrides the pre-filled value. ' parameters: - $ref: '#/components/parameters/DraftInboxId' - name: message_id in: path required: true description: Inbound message UUID to reply to. schema: type: string format: uuid requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/EmailDraftRequest' example: text_body: Thanks for the update — I will review today. responses: '201': description: The created reply draft. content: application/json: schema: $ref: '#/components/schemas/EmailDraftResponse' example: data: record_type: email_draft id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 inbox_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: draft from: string from_name: string to: - email: string name: string cc: - email: string name: string bcc: - email: string name: string reply_to: string subject: string text_body: string html_body: string attachments: [] labels: - string tags: - string reply_to_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 thread_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sent_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/DraftUnavailableResponse' /email_inboxes/{inbox_id}/messages/{message_id}/labels: delete: tags: - Email Inboxes operationId: RemoveEmailInboxMessageLabels summary: Remove labels from an inbox message description: 'Removes one or more labels from a message. Idempotent — removing a label the message does not carry is a no-op and still returns 200. Removal is case-sensitive. ' parameters: - $ref: '#/components/parameters/InboxIdPathParam' - $ref: '#/components/parameters/MessageIdPathParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LabelMutationRequest' example: labels: - spam responses: '200': $ref: '#/components/responses/InboundMessageLabelResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/LabelServiceUnavailableResponse' post: tags: - Email Inboxes operationId: AddEmailInboxMessageLabels summary: Add labels to an inbox message description: 'Adds one or more mutable labels to a message. Labels carry agent workflow state such as `spam`, `needs_review`, or `processed`. Labels are **not** the same as the send-time `tags` on outbound messages: `tags` are immutable and propagate to Email Detail Records and Mission Control for billing attribution, while labels are mailbox state that never reaches the reporting contract. The operation is an idempotent set union — adding a label the message already carries is a no-op and still returns 200. Labels are case-sensitive, and message labels are independent of thread labels. ' parameters: - $ref: '#/components/parameters/InboxIdPathParam' - $ref: '#/components/parameters/MessageIdPathParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LabelMutationRequest' example: labels: - spam - urgent responses: '200': $ref: '#/components/responses/InboundMessageLabelResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/LabelServiceUnavailableResponse' /email_inboxes/{inbox_id}/threads: get: tags: - Email Inboxes operationId: ListEmailInboxThreads summary: List threads in an inbox description: Lists thread summaries newest first using stable cursor pagination. parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: page[size] in: query required: false description: Number of results to return. Defaults to 25; maximum is 100. schema: type: integer minimum: 1 maximum: 100 default: 25 - name: page[after] in: query required: false description: Opaque cursor returned by the previous page. schema: type: string - name: filter[label] in: query required: false description: Returns only threads carrying this label. Thread labels are independent of the labels on the thread's messages. schema: type: string maxLength: 255 responses: '200': description: Paginated inbox threads. content: application/json: schema: $ref: '#/components/schemas/InboundThreadListResponse' example: data: - id: 33333333-3333-3333-3333-333333333333 record_type: email_thread inbox_id: 11111111-1111-1111-1111-111111111111 subject: Project update preview: null message_count: 2 unread_count: 1 last_message_id: 55555555-5555-5555-5555-555555555555 last_message_at: '2026-07-15T12:30:00Z' created_at: '2026-07-14T10:00:00Z' updated_at: '2026-07-15T12:30:00Z' labels: - needs_review meta: page_size: 25 page_cursor: MjAyNi0wNy0xNVQxMjozMDowMFp8MzMzMzMzMzMtMzMzMy0zMzMzLTMzMzMtMzMzMzMzMzMzMzMz '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': description: Inbound thread storage is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: Inbox threads are temporarily unavailable. Please try again later. /email_inboxes/{inbox_id}/threads/{thread_id}: get: tags: - Email Inboxes operationId: GetEmailInboxThread summary: Get a thread and a page of its messages description: Returns a bounded page of inbound and outbound thread messages interleaved in chronological order using stable cursor pagination. parameters: - name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid - name: thread_id in: path required: true description: Email thread UUID. schema: type: string format: uuid - name: page[size] in: query required: false description: Number of thread messages to return. Defaults to 25; maximum is 100. schema: type: integer minimum: 1 maximum: 100 default: 25 - name: page[after] in: query required: false description: Opaque message cursor returned by the previous thread-detail page. schema: type: string responses: '200': description: Thread summary and chronological messages. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/InboundThreadDetail' meta: $ref: '#/components/schemas/email_PaginationMeta' required: - data - meta example: data: id: 33333333-3333-3333-3333-333333333333 record_type: email_thread inbox_id: 11111111-1111-1111-1111-111111111111 subject: Project update preview: null message_count: 2 unread_count: 1 last_message_id: 55555555-5555-5555-5555-555555555555 last_message_at: '2026-07-15T12:30:00Z' created_at: '2026-07-14T10:00:00Z' updated_at: '2026-07-15T12:30:00Z' labels: - needs_review messages: - 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: [] 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' meta: page_size: 25 page_cursor: MjAyNi0wNy0xNVQxMjozMDowMFp8NTU1NTU1NTUtNTU1NS01NTU1LTU1NTUtNTU1NTU1NTU1NTU1 '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': description: Inbound thread storage is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: Inbox threads are temporarily unavailable. Please try again later. /email_inboxes/{inbox_id}/threads/{thread_id}/labels: delete: tags: - Email Inboxes operationId: RemoveEmailInboxThreadLabels summary: Remove labels from an inbox thread description: 'Removes one or more labels from a thread. Idempotent — removing a label the thread does not carry is a no-op and still returns 200. ' parameters: - $ref: '#/components/parameters/InboxIdPathParam' - $ref: '#/components/parameters/ThreadIdPathParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LabelMutationRequest' example: labels: - needs_review responses: '200': $ref: '#/components/responses/InboundThreadLabelResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/LabelServiceUnavailableResponse' post: tags: - Email Inboxes operationId: AddEmailInboxThreadLabels summary: Add labels to an inbox thread description: 'Adds one or more mutable labels to a thread, letting an agent mark a whole conversation (for example `needs_review`) without labelling each message individually. Thread labels are independent of message labels: labelling a thread does not label its messages, and labelling a message does not label its thread. Idempotent and case-sensitive. ' parameters: - $ref: '#/components/parameters/InboxIdPathParam' - $ref: '#/components/parameters/ThreadIdPathParam' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LabelMutationRequest' example: labels: - needs_review responses: '200': $ref: '#/components/responses/InboundThreadLabelResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': $ref: '#/components/responses/LabelServiceUnavailableResponse' /email_messages: delete: tags: - Email Messages operationId: DeleteEmailMessagesByAddress summary: Delete email messages by address description: 'Permanently deletes every email in the authenticated account sent from or to the supplied address, including retained events whose parent message has expired. Events and durable recipients are deleted immediately with each message. The operation never searches or reports matches in another account. The legacy `/v2/emails` DELETE route is a backward-compatible alias. ' parameters: - name: address in: query required: true description: Sender or recipient address to delete. Matching is trimmed and case-insensitive. schema: type: string format: email responses: '204': description: Matching account-scoped email data deleted successfully. '400': $ref: '#/components/responses/email_BadRequestResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '500': $ref: '#/components/responses/email_InternalServerErrorResponse' get: tags: - Email Messages operationId: ListEmailMessages summary: List email messages description: 'Lists messages sorted newest first by `created_at desc, id desc`. Tags and metadata filters compose with cursor pagination. The legacy `/v2/emails` GET route is a backward-compatible alias for this operation. ' parameters: - $ref: '#/components/parameters/email_PageSize' - $ref: '#/components/parameters/PageCursor' - name: filter[tags] in: query required: false description: Comma-separated tags. Each segment is trimmed, and messages having at least one supplied tag are returned; matching is exact and case-sensitive after trimming. Because commas delimit values and surrounding whitespace is removed, this filter cannot represent stored tags containing literal commas or leading/trailing whitespace. An empty value omits the filter. Empty segments and non-string/nested query shapes return HTTP 400. schema: type: string example: billing,transactional - name: filter[metadata] in: query required: false description: Metadata containment filter, supplied as a JSON object or comma-separated `key=value` pairs. All supplied key/value pairs must be contained in the message metadata. An empty value or empty JSON object omits the filter. Malformed values, valid non-object JSON, pairs without `=`, empty keys, and non-string/nested query shapes return HTTP 400. schema: type: string examples: jsonObject: value: '{"campaign":"spring","region":"us"}' keyValuePairs: value: campaign=spring,region=us responses: '200': description: Paginated list of email messages. content: application/json: schema: $ref: '#/components/schemas/EmailMessageListResponse' '400': description: The tags or metadata filter is malformed or uses an unsupported query shape. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' examples: invalidTagsFilter: value: errors: - code: '10015' title: Bad Request detail: filter[tags] must be a comma-separated list of non-empty tags invalidMetadataFilter: value: errors: - code: '10015' title: Bad Request detail: filter[metadata] must be a JSON object or comma-separated key=value pairs '401': $ref: '#/components/responses/email_UnauthorizedResponse' post: tags: - Email Messages operationId: CreateEmailMessage summary: Create or send an email message description: 'Queues, schedules, or sandbox-sends an email message. The legacy `/v2/emails` POST route is a backward-compatible alias for this operation. `subject` is required unless `template_id` is supplied. When using `template_id`, do not also provide `subject`, `html_body`, or `text_body`; the template is rendered with `template_variables`. Note: template lookup failures (not found, wrong account) return 400, not 404.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailRequest' examples: simple: value: from: sender@example.com to: - recipient@example.com subject: Hello from Telnyx text_body: This is a test email. withAddressObjects: value: from: email: sender@example.com name: Telnyx Notifications to: - email: recipient@example.com name: Ada Lovelace subject: Welcome html_body:

Welcome!

withTemplate: value: from: sender@example.com to: - recipient@example.com template_id: 7a7c1a2b-1111-4c72-8c21-2bbf3d40c123 template_variables: first_name: Ada responses: '202': description: Message queued, scheduled, or sandbox-created. content: application/json: schema: $ref: '#/components/schemas/EmailMessageResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' X-Telnyx-Reputation-Warning: description: Present with `warn` when the accepted send uses a sender domain in the reputation warn band; delivery proceeds with reduced sending limits. schema: type: string enum: - warn '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: email is required '401': $ref: '#/components/responses/email_UnauthorizedResponse' '403': $ref: '#/components/responses/email_ForbiddenResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': description: Validation failed (including an invalid or non-future `scheduled_at`/`send_at`), send-time template rendering failed (including a strict-variable failure naming the missing required variable), or all recipients suppressed (code `recipient_suppressed`, includes top-level `suppressed` array). Reusing an Idempotency-Key with a different request also returns 422 (10027). content: application/json: schema: oneOf: - $ref: '#/components/schemas/email_ErrorResponse' - $ref: '#/components/schemas/RenderErrorResponse' - $ref: '#/components/schemas/RecipientSuppressedError' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' '429': $ref: '#/components/responses/EmailSendTooManyRequestsResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': $ref: '#/components/responses/PayloadTooLargeResponse' parameters: - $ref: '#/components/parameters/IdempotencyKey' /email_messages/batch: post: tags: - Email Messages operationId: CreateEmailMessageBatch summary: Create a batch of email messages description: Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has `strict_variables` enabled, a missing required variable produces a per-item `unprocessable_entity` error naming that variable while the other messages continue. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailBatchRequest' example: sandbox_mode: false messages: - from: sender@example.com to: - recipient1@example.com subject: Hello 1 text_body: Message 1 - from: sender@example.com to: - recipient2@example.com subject: Hello 2 text_body: Message 2 responses: '207': description: Multi-Status — returned after request-wide admission checks pass and item processing runs. Each message is validated and sent independently; per-message failures do not affect other messages in the batch. An invalid or non-future `scheduled_at`/`send_at` is reported as a per-item `unprocessable_entity` error while the remaining items continue. When all messages succeed, `errors` is empty and every item is in `data`; otherwise `data` contains successes and `errors` contains failures. Request-wide gates can instead return 4xx or 5xx. content: application/json: schema: $ref: '#/components/schemas/EmailBatchResponse' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: email is required '401': $ref: '#/components/responses/email_UnauthorizedResponse' '429': $ref: '#/components/responses/EmailSendTooManyRequestsResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': $ref: '#/components/responses/PayloadTooLargeResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' '422': description: The Idempotency-Key was already used for a different request (10027). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. parameters: - $ref: '#/components/parameters/IdempotencyKey' /email_messages/{email_id}/events: get: tags: - Email Messages operationId: ListEmailMessageEvents summary: List events for an email message description: 'Lists events for a single message sorted oldest first by `occurred_at asc, id asc`. The legacy `/v2/emails/{id}/events` GET route is a backward-compatible alias. For compatibility, each event carries the legacy customer-visible `event_type` (`email.`-prefixed), the additive `canonical_event_type` (`email.`-prefixed), and the deprecated `type` duplicate — whose value keeps the exact legacy format: the bare stored event name, never `email.`-prefixed. Gateway rejections render `email.failed` + canonical `email.gw_reject`; MTA expirations render `email.bounced` + canonical `email.expired`; every unchanged outcome carries identical `event_type` and `canonical_event_type` values (and `type` keeps the stored name). ' parameters: - name: email_id in: path required: true description: Email message UUID. schema: type: string format: uuid - $ref: '#/components/parameters/email_PageSize' - $ref: '#/components/parameters/PageCursor' responses: '200': description: Paginated list of message events. content: application/json: schema: $ref: '#/components/schemas/MessageEventListResponse' example: data: - type: queued event_type: email.queued canonical_event_type: email.queued occurred_at: '2026-07-06T18:24:00.000Z' - type: gw_reject event_type: email.failed canonical_event_type: email.gw_reject occurred_at: '2026-07-06T18:24:00.000Z' meta: page_size: 50 '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' /email_messages/{email_id}/recipients: get: tags: - Email Messages operationId: ListEmailMessageRecipients summary: List recipients for an email message description: 'Lists per-recipient delivery states for a single message with cursor pagination. Each recipient has an independent status, billable flag, and lifecycle timestamps. BCC recipient addresses are redacted (returned as null) to protect BCC privacy. Default page size is 25, maximum is 100. ' parameters: - name: email_id in: path required: true description: Email message UUID. schema: type: string format: uuid - $ref: '#/components/parameters/email_PageSize' - $ref: '#/components/parameters/PageCursor' - name: status in: query description: Filter recipients by status. required: false schema: type: string enum: - queued - sending - sent - deferred - delivered - bounced - failed - gw_reject - cancelled - injection_timeout - expired - name: kind in: query description: Filter recipients by address kind. required: false schema: type: string enum: - to - cc - bcc responses: '200': description: Paginated list of recipients. content: application/json: schema: $ref: '#/components/schemas/EmailRecipientListResponse' example: data: - record_type: email_recipient id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 address: example@telnyx.com kind: to status: queued billable: false sent_at: '2024-01-23T18:10:02.574Z' delivered_at: '2024-01-23T18:10:02.574Z' failed_at: '2024-01-23T18:10:02.574Z' smtp_code: 0 smtp_response: string meta: page_size: 1 page_cursor: string '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' /email_messages/{email_id}/recipients/{recipient_id}: get: tags: - Email Messages operationId: GetEmailMessageRecipient summary: Get a single recipient's delivery state description: 'Returns the current delivery state of a single recipient, including status, billable flag, SMTP detail, and lifecycle timestamps. BCC recipient addresses are redacted (returned as null). ' parameters: - name: email_id in: path required: true description: Email message UUID. schema: type: string format: uuid - name: recipient_id in: path required: true description: Recipient UUID. schema: type: string format: uuid responses: '200': description: Recipient delivery state. content: application/json: schema: $ref: '#/components/schemas/EmailRecipientResponse' example: data: record_type: email_recipient id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 message_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 address: example@telnyx.com kind: to status: queued billable: false sent_at: '2024-01-23T18:10:02.574Z' delivered_at: '2024-01-23T18:10:02.574Z' failed_at: '2024-01-23T18:10:02.574Z' smtp_code: 0 smtp_response: string '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' /email_messages/{email_id}/schedule: delete: tags: - Email Messages operationId: CancelScheduledEmailMessage summary: Cancel a scheduled email message description: Cancels a scheduled email and returns it with status `cancelled`. The legacy `/v2/emails/{id}/schedule` DELETE route is an alias. parameters: - name: email_id in: path required: true description: Email message UUID. schema: type: string format: uuid responses: '200': description: Scheduled email cancelled. content: application/json: schema: $ref: '#/components/schemas/EmailMessageResponse' '400': $ref: '#/components/responses/email_BadRequestResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' patch: tags: - Email Messages operationId: RescheduleEmailMessage summary: Reschedule a scheduled email message description: Moves an existing scheduled email to a new future send time. Only the delivery time (`scheduled_at`) changes; the message ID, content, recipients, tags, and metadata remain unchanged. Returns `409 Conflict` if the message is no longer scheduled or its scheduled-send worker has already started processing it. This route emits no dedicated `rescheduled` event. parameters: - name: email_id in: path required: true description: Email message UUID. schema: type: string format: uuid requestBody: required: true description: Provide a future delivery time. The timestamp in this example is illustrative; replace it with a value that is in the future when making a request. content: application/json: schema: $ref: '#/components/schemas/RescheduleEmailMessageRequest' example: scheduled_at: '2099-08-07T14:30:00Z' responses: '200': description: Scheduled email rescheduled. The response matches the single-message GET representation. content: application/json: schema: $ref: '#/components/schemas/EmailMessageDetailResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '409': description: The email is not scheduled or its scheduled-send worker is already processing it. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' '422': description: '`scheduled_at` is missing, invalid ISO 8601, or not in the future.' content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: scheduled_at must be in the future source: pointer: /data/attributes/scheduled_at /email_messages/{id}: delete: tags: - Email Messages operationId: DeleteEmailMessage summary: Delete an email message description: 'Permanently deletes an account-scoped email message, its events, its durable recipients, and unshared attachment objects. Returns 404 when the message does not exist in the authenticated account. The legacy `/v2/emails/{id}` DELETE route is a backward-compatible alias. ' parameters: - $ref: '#/components/parameters/EmailMessageId' responses: '204': description: Email data deleted successfully. '400': $ref: '#/components/responses/email_BadRequestResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '500': $ref: '#/components/responses/email_InternalServerErrorResponse' get: tags: - Email Messages operationId: GetEmailMessage summary: Get an email message description: The legacy `/v2/emails/{id}` GET route is a backward-compatible alias for this operation. parameters: - $ref: '#/components/parameters/EmailMessageId' responses: '200': description: Email message details, including plain-text and HTML bodies. content: application/json: schema: $ref: '#/components/schemas/EmailMessageDetailResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' /email_templates: get: tags: - Email Templates operationId: ListEmailTemplates summary: List email templates description: Lists templates sorted newest first by `created_at desc, id desc`. Optional filters match a case-insensitive literal name/subject query, stored body presence, and the `strict_variables` and `autoescape` settings. Filters intersect, remain scoped to the authenticated account, and apply before cursor pagination. Invalid filter names or values return 400. parameters: - $ref: '#/components/parameters/email_PageSize' - $ref: '#/components/parameters/PageCursor' - $ref: '#/components/parameters/TemplateQueryFilter' - $ref: '#/components/parameters/TemplateContentTypeFilter' - $ref: '#/components/parameters/TemplateStrictVariablesFilter' - $ref: '#/components/parameters/TemplateAutoescapeFilter' responses: '200': description: Paginated list of templates. content: application/json: schema: $ref: '#/components/schemas/EmailTemplateListResponse' example: data: - record_type: email_template id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: string subject: string html_body: string text_body: string variables: - string variables_mode: automatic strict_variables: false autoescape: false variable_schema: null created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: page_size: 1 page_cursor: string '400': $ref: '#/components/responses/email_BadRequestResponse' '401': $ref: '#/components/responses/email_UnauthorizedResponse' post: tags: - Email Templates operationId: CreateEmailTemplate summary: Create an email template description: Creates a Liquid email template. Variables are auto-extracted when omitted. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailTemplateRequest' example: name: Welcome Email subject: Welcome, {{ first_name }}! html_body:

Hello {{ first_name }}

text_body: Hello {{ first_name }} responses: '201': description: Template created. content: application/json: schema: $ref: '#/components/schemas/EmailTemplateResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '422': description: Validation Failed (10015) or changeset validation error. Reusing an Idempotency-Key with a different request also returns 422 (10027). 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 '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: email is required '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': $ref: '#/components/responses/PayloadTooLargeResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' parameters: - $ref: '#/components/parameters/IdempotencyKey' /email_templates/{id}: delete: tags: - Email Templates operationId: DeleteEmailTemplate summary: Delete an email template parameters: - $ref: '#/components/parameters/TemplateId' responses: '204': description: Template deleted. Empty response body. '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' description: Deletes the account-owned template. The operation returns `204` with no body and prevents future sends or renders from using the deleted template ID. get: tags: - Email Templates operationId: GetEmailTemplate summary: Get an email template parameters: - $ref: '#/components/parameters/TemplateId' responses: '200': description: Template details. content: application/json: schema: $ref: '#/components/schemas/EmailTemplateResponse' example: data: record_type: email_template id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: string subject: string html_body: string text_body: string variables: - string variables_mode: automatic strict_variables: false autoescape: false variable_schema: null created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' description: Returns the account-owned template identified by ID, including its Liquid subject and bodies, declared variables, and timestamps. patch: tags: - Email Templates operationId: UpdateEmailTemplate summary: Update an email template description: Updates one or more fields of the specified email template and returns the updated template. parameters: - $ref: '#/components/parameters/TemplateId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateEmailTemplateRequest' example: subject: Welcome aboard, {{first_name}}! responses: '200': description: Template updated. content: application/json: schema: $ref: '#/components/schemas/EmailTemplateResponse' example: data: record_type: email_template id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: string subject: string html_body: string text_body: string variables: - string variables_mode: automatic strict_variables: false autoescape: false variable_schema: null created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' put: tags: - Email Templates operationId: ReplaceEmailTemplate summary: Replace an email template description: Replaces template fields. Behaves identically to PATCH; provided for compatibility with Phoenix resource routes. parameters: - $ref: '#/components/parameters/TemplateId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateEmailTemplateRequest' example: subject: Welcome aboard, {{first_name}}! responses: '200': description: Template updated. content: application/json: schema: $ref: '#/components/schemas/EmailTemplateResponse' example: data: record_type: email_template id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: string subject: string html_body: string text_body: string variables: - string variables_mode: automatic strict_variables: false autoescape: false variable_schema: null created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' /email_templates/{id}/render: post: tags: - Email Templates operationId: RenderEmailTemplate summary: Render an email template description: 'Renders a template using the provided Liquid variables. Missing `template_variables` defaults to `{}`. When the template has `strict_variables` enabled and a required variable (per `variable_schema`) is missing, returns 422 naming the variable. When the template has `autoescape` enabled, the rendered `html_body` expression output is HTML-escaped at the output boundary; `subject` and `text_body` are not autoescaped.' parameters: - $ref: '#/components/parameters/TemplateId' requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/RenderEmailTemplateRequest' example: template_variables: first_name: Ada responses: '200': description: Rendered template content. content: application/json: schema: $ref: '#/components/schemas/RenderedEmailTemplateResponse' example: data: record_type: email_template id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: string subject: string html_body: string text_body: string variables: - string variables_mode: automatic strict_variables: false autoescape: false variable_schema: null created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/TemplateRenderFailedResponse' /email_threads: get: tags: - Email Threads operationId: ListEmailThreads summary: List threads across every inbox in the account description: 'Lists thread summaries for the whole account, newest first, using stable cursor pagination. An agent operating many inboxes gets every conversation in one call instead of one call per inbox. Each thread carries its own `inbox_id` so a reply can be routed back to the right inbox. Use `filter[inbox_id]` (repeatable) to narrow the result to specific inboxes. Because a thread ID can be delivered to multiple inboxes, each result is identified by its `(inbox_id, id)` pair. ' parameters: - name: filter[inbox_id] in: query required: false description: 'Restrict results to one or more inboxes. Repeat the parameter (`filter[inbox_id][]=...&filter[inbox_id][]=...`) or pass a comma-separated list. Omit to list every inbox in the account. Inboxes outside the account are silently excluded. If the filter is present, it must contain at least one non-empty UUID. ' explode: true schema: type: array minItems: 1 items: type: string format: uuid - name: page[size] in: query required: false description: Number of results to return. Defaults to 25; maximum is 100. schema: type: integer minimum: 1 maximum: 100 default: 25 - name: page[after] in: query required: false description: Opaque cursor returned by the previous page. schema: type: string - name: filter[label] in: query required: false description: Returns only threads carrying this label. Matching is exact and case-sensitive. Thread labels are independent of the labels on the thread's messages. schema: type: string maxLength: 255 responses: '200': description: Paginated account-wide threads. content: application/json: schema: $ref: '#/components/schemas/InboundThreadListResponse' example: data: - id: 33333333-3333-3333-3333-333333333333 record_type: email_thread inbox_id: 11111111-1111-1111-1111-111111111111 subject: Project update preview: null message_count: 2 unread_count: 1 last_message_id: 55555555-5555-5555-5555-555555555555 last_message_at: '2026-07-15T12:30:00Z' created_at: '2026-07-14T10:00:00Z' updated_at: '2026-07-15T12:30:00Z' labels: - needs_review - id: 44444444-4444-4444-4444-444444444444 record_type: email_thread inbox_id: 22222222-2222-2222-2222-222222222222 subject: Support request preview: null message_count: 1 unread_count: 0 last_message_id: 66666666-6666-6666-6666-666666666666 last_message_at: '2026-07-15T09:00:00Z' created_at: '2026-07-15T09:00:00Z' updated_at: '2026-07-15T09:00:00Z' labels: [] meta: page_size: 25 page_cursor: MjAyNi0wNy0xNVQxMjozMDowMFp8MzMzMzMzMzMtMzMzMy0zMzMzLTMzMzMtMzMzMzMzMzMzMzMz '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': description: Inbound thread storage is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: Email threads are temporarily unavailable. Please try again later. /email_threads/{thread_id}: get: tags: - Email Threads operationId: GetEmailThread summary: Get an account-wide thread and a page of its messages description: 'Returns a thread and a bounded page of its inbound and outbound messages, interleaved in chronological order. The `inbox_id` returned by the list endpoint is required because a thread ID can occur in multiple inboxes. Only messages matching that `(inbox_id, thread_id)` pair are returned. Threads outside the account return an opaque 404. ' parameters: - name: thread_id in: path required: true description: Email thread UUID. schema: type: string format: uuid - name: inbox_id in: query required: true description: Inbox UUID that, together with `thread_id`, identifies the thread. schema: type: string format: uuid - name: page[size] in: query required: false description: Number of thread messages to return. Defaults to 25; maximum is 100. schema: type: integer minimum: 1 maximum: 100 default: 25 - name: page[after] in: query required: false description: Opaque message cursor returned by the previous thread-detail page. schema: type: string responses: '200': description: Thread summary and chronological messages. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/InboundThreadDetail' meta: $ref: '#/components/schemas/email_PaginationMeta' required: - data - meta example: data: id: 33333333-3333-3333-3333-333333333333 record_type: email_thread inbox_id: 11111111-1111-1111-1111-111111111111 subject: Project update preview: null message_count: 1 unread_count: 0 last_message_id: 55555555-5555-5555-5555-555555555555 last_message_at: '2026-07-15T12:30:00Z' created_at: '2026-07-15T12:30:00Z' updated_at: '2026-07-15T12:30:00Z' labels: - needs_review messages: - 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: null 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: [] 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' meta: page_size: 25 '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' '422': $ref: '#/components/responses/ValidationErrorResponse' '503': description: Inbound thread storage is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: Email threads are temporarily unavailable. Please try again later. /email_unsubscribe_groups: get: tags: - Email Unsubscribe Groups summary: List unsubscribe groups description: 'Offset pagination only (`page[number]` default 1, `page[size]` default 25, max 100). No `sort`/`filter`/cursor — ordering fixed `desc created_at, desc id`. Uses the shared `QueryParser.parse_offset/1` — a malformed `page` (e.g. flat `?page=1` instead of `?page[number]=1`) returns `400` (code `10015`), consistent with `GET /v2/email_blocks`. `meta` includes `total_pages`. ' operationId: listUnsubscribeGroups parameters: - $ref: '#/components/parameters/BlocksPageNumber' - $ref: '#/components/parameters/BlocksPageSize' responses: '200': description: Groups. content: application/json: schema: $ref: '#/components/schemas/UnsubscribeGroupListResponse' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_unsubscribe_group name: string description: string created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '401': $ref: '#/components/responses/email_Unauthorized' '406': $ref: '#/components/responses/FrameworkError' post: tags: - Email Unsubscribe Groups summary: Create an unsubscribe group operationId: createUnsubscribeGroup requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUnsubscribeGroupRequest' example: name: Marketing Newsletter description: Weekly product updates and promotions responses: '201': description: Created. content: application/json: schema: $ref: '#/components/schemas/UnsubscribeGroupResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_unsubscribe_group name: string description: string created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_Unauthorized' '406': $ref: '#/components/responses/FrameworkError' '422': $ref: '#/components/responses/ChangesetError' description: Creates an account-owned unsubscribe group for associating email categories with separate recipient suppression lists. /email_unsubscribe_groups/{id}: delete: tags: - Email Unsubscribe Groups summary: Delete an unsubscribe group description: 'If the group has 0 active suppressions, hard-deletes the row. With `force=true`, soft-deletes all active suppressions first (status → `removed`, `group_id` cleared, `removed` audit event per block) in a single transaction, then hard-deletes the group. Without `force` and active suppressions present → `409`. Audit trail is preserved. `force` only accepts the string `"true"` or boolean `true`; all other values are false. ' operationId: deleteUnsubscribeGroup parameters: - $ref: '#/components/parameters/ForceQuery' responses: '204': description: Deleted. '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' '409': description: Group has active suppressions and `force` is false. content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '40901' title: Conflict detail: Group has 3 active suppression(s). Remove them first or use ?force=true. '422': $ref: '#/components/responses/ChangesetError' get: tags: - Email Unsubscribe Groups summary: Retrieve an unsubscribe group operationId: showUnsubscribeGroup responses: '200': description: The group. content: application/json: schema: $ref: '#/components/schemas/UnsubscribeGroupResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_unsubscribe_group name: string description: string created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' description: Returns the account-owned unsubscribe group identified by ID. parameters: - $ref: '#/components/parameters/PathId' patch: tags: - Email Unsubscribe Groups summary: Update an unsubscribe group description: Partial update (only `name` / `description`). `PUT` is not routed. operationId: updateUnsubscribeGroup requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateUnsubscribeGroupRequest' example: description: Weekly product updates and promotions responses: '200': description: The updated group. content: application/json: schema: $ref: '#/components/schemas/UnsubscribeGroupResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_unsubscribe_group name: string description: string created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' '422': $ref: '#/components/responses/ChangesetError' /email_unsubscribe_groups/{id}/suppressions: get: tags: - Email Unsubscribe Groups summary: List suppressions in a group description: 'Account + group scoped. Offset pagination only (`page[number]` default 1, `page[size]` default 25, max 100). No `sort`/`filter`/ cursor — ordering fixed `desc created_at, desc id`. Uses the shared `QueryParser.parse_offset/1` — a malformed `page` returns `400` (code `10015`), consistent with `GET /v2/email_blocks`. `meta` includes `total_pages`. Rows reuse the standard suppression shape (`group_id` set to this group). ' operationId: listGroupSuppressions parameters: - $ref: '#/components/parameters/BlocksPageNumber' - $ref: '#/components/parameters/BlocksPageSize' responses: '200': description: Group suppressions. content: application/json: schema: $ref: '#/components/schemas/GroupSuppressionListResponse' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' parameters: - $ref: '#/components/parameters/PathId' post: tags: - Email Unsubscribe Groups summary: Add a group suppression description: 'Creates a suppression with `reason: unsubscribe`, `source: manual`, `group_id: `. All other body fields are ignored; only `to` is read. Idempotent (same dedupe key → `200`, no new event). ' operationId: addGroupSuppression requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddGroupSuppressionRequest' example: to: user@example.com responses: '201': description: Created. content: application/json: schema: $ref: '#/components/schemas/EmailBlockResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' '200': description: Idempotent — already existed. content: application/json: schema: $ref: '#/components/schemas/EmailBlockResponse' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: email_block domain_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 group_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 from: string to: string reason: hard_bounce source: feedback scope: account status: active created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' expires_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' '422': $ref: '#/components/responses/ChangesetError' /email_unsubscribe_groups/{id}/suppressions/{email}: delete: tags: - Email Unsubscribe Groups summary: Remove a group suppression description: 'Soft-deletes all active blocks for (account, group, normalized email) — one `removed` audit event per block (`actor: manual`). The `email` path segment is normalized (trim + lower-case) before matching. Idempotent on already-removed rows (returns `404` since they''re no longer `active`). Two distinct `404` cases: a missing/cross-account **group** returns `10001 "The requested unsubscribe group was not found"`; a group that exists but has **no active suppression** for that email returns `10001 "The requested group suppression was not found"`. ' operationId: removeGroupSuppression responses: '204': description: Removed. '401': $ref: '#/components/responses/email_Unauthorized' '404': $ref: '#/components/responses/BlocksNotFound' '406': $ref: '#/components/responses/FrameworkError' '422': $ref: '#/components/responses/ChangesetError' parameters: - $ref: '#/components/parameters/PathId' - $ref: '#/components/parameters/PathEmail' /email_validations: post: tags: - Email Validations operationId: CreateEmailValidation summary: Validate a single email address description: Validates a single email address and returns deliverability checks. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailValidationRequest' example: email: user@example.com responses: '200': description: Email validation result. content: application/json: schema: $ref: '#/components/schemas/EmailValidationResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: email is required '401': $ref: '#/components/responses/email_UnauthorizedResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': $ref: '#/components/responses/PayloadTooLargeResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' '422': description: The Idempotency-Key was already used for a different request (10027). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. parameters: - $ref: '#/components/parameters/IdempotencyKey' /email_validations/batch: post: tags: - Email Validations operationId: CreateEmailValidationBatch summary: Create a batch email validation job description: Creates an asynchronous batch validation job for up to 1,000 email addresses. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEmailValidationBatchRequest' example: emails: - user@example.com - admin@example.org webhook_url: https://example.com/webhooks/email-validation responses: '202': description: Batch validation job accepted. Poll GET /email_validations/batch/{id} with the returned batch id to retrieve results. content: application/json: schema: $ref: '#/components/schemas/EmailValidationBatchResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': description: Missing or invalid email list, or batch size exceeded. Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' examples: invalidEmails: value: errors: - code: '10015' title: Bad Request detail: emails is required and must be an array '401': $ref: '#/components/responses/email_UnauthorizedResponse' '422': description: Changeset validation error (e.g. invalid webhook_url). Reusing an Idempotency-Key with a different request also returns 422 (10027). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: webhook_url must be an HTTP or HTTPS URL source: pointer: /data/attributes/webhook_url '500': $ref: '#/components/responses/email_InternalServerErrorResponse' '409': $ref: '#/components/responses/IdempotencyConflictResponse' '413': $ref: '#/components/responses/PayloadTooLargeResponse' '503': $ref: '#/components/responses/email_ServiceUnavailableResponse' parameters: - $ref: '#/components/parameters/IdempotencyKey' /email_validations/batch/{id}: get: tags: - Email Validations operationId: GetEmailValidationBatch summary: Get a batch email validation job description: Retrieves the current status and, once completed, validation results for a batch job. parameters: - $ref: '#/components/parameters/BatchId' responses: '200': description: Batch validation job status. content: application/json: schema: $ref: '#/components/schemas/EmailValidationBatchDetailResponse' example: data: record_type: email_validation_batch id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 status: pending total: 0 webhook_url: https://example.com completed_at: '2024-01-23T18:10:02.574Z' '401': $ref: '#/components/responses/email_UnauthorizedResponse' '404': $ref: '#/components/responses/email_NotFoundResponse' /enterprises: get: summary: List enterprises description: Return the enterprises you own, paginated. The default page size is 20; the maximum is 250. operationId: listEnterprises tags: - Enterprises x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/BcPageNumber' - name: page[size] in: query description: Items per page. Default 10. Maximum 250; values above are clamped to 250. required: false schema: type: integer minimum: 1 maximum: 250 default: 10 example: 10 - name: legal_name in: query description: Filter by legal name (partial match). required: false schema: type: string example: Acme - name: filter[legal_name][contains] in: query required: false description: Case-insensitive partial match on legal name. schema: type: string example: Acme - name: filter[role_type] in: query required: false description: 'Only return enterprises of this type: `bpo` for call-center (BPO) enterprises, `enterprise` for normal enterprises. Omit to return both.' schema: type: string enum: - enterprise - bpo example: bpo responses: '200': description: Paginated list of enterprises. content: application/json: schema: $ref: '#/components/schemas/EnterpriseListPublic' '401': $ref: '#/components/responses/branded-calling_GenericErrorResponse' post: summary: Create an enterprise description: 'Create the legal entity (enterprise) that represents your business on the Telnyx platform. The response carries a server-assigned `id` you use for every subsequent call. An enterprise is created once and reused; the API collects all required fields up front. Common failure modes: - `422` - a required field is missing or malformed (the response `errors[].source.pointer` names the field). - `409` - an enterprise with the same identifying details already exists under your account.' operationId: createEnterprise tags: - Enterprises requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseCreate' example: legal_name: Run 065 Debug Co organization_type: commercial country_code: US role_type: enterprise website: https://run065.example.com fein: 12-3456789 industry: technology number_of_employees: 51-200 organization_legal_type: llc doing_business_as: Run 065 Debug jurisdiction_of_incorporation: Delaware organization_contact: first_name: Sam last_name: Org email: org@run065.example.com job_title: Compliance Lead phone_number: '+13125550000' billing_contact: first_name: Alex last_name: Bill email: billing@run065.example.com phone_number: '+13125550001' organization_physical_address: country: US administrative_area: IL city: Chicago postal_code: '60601' street_address: 100 Main St billing_address: country: US administrative_area: IL city: Chicago postal_code: '60601' street_address: 100 Main St responses: '201': description: Enterprise created. content: application/json: schema: $ref: '#/components/schemas/EnterprisePublicWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '401': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '422': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /enterprises/{enterprise_id}: delete: summary: Delete an enterprise description: 'Soft-delete an enterprise. Failure modes: - `400` - the enterprise still has dependent resources in a non-deletable state. Remove those first; the response `detail` identifies what is blocking the delete. - `409` - the enterprise has a dependent resource with an unresolved claim. Resolve it before deleting. - `404` - the enterprise does not exist or does not belong to your account.' operationId: deleteEnterprise tags: - Enterprises parameters: - $ref: '#/components/parameters/EnterpriseId' responses: '204': description: 204 (no body) '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '401': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' get: summary: Get an enterprise description: Retrieve a single enterprise by id. Returns `404` if the id does not exist or does not belong to your account. operationId: getEnterprise tags: - Enterprises parameters: - $ref: '#/components/parameters/EnterpriseId' responses: '200': description: Enterprise. content: application/json: schema: $ref: '#/components/schemas/EnterprisePublicWrapped' '401': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' put: summary: Replace an enterprise description: 'Replace the enterprise''s mutable fields. Only mutable fields may be sent. Server-assigned and immutable fields (`id`, `record_type`, `created_at`, `updated_at`, status fields, `organization_type`, `country_code`, `role_type`) cannot be changed: including any of them in the body is rejected with `400 Bad Request` (`Field ''X'' is not allowed in this request`). For an approved BPO enterprise (`role_type` `bpo`), changing any identity field (legal name, DBA, website, FEIN, industry, number of employees, physical address, organization contact, D-U-N-S number, legal type, SIC code, corporate registration number, professional license number, or jurisdiction of incorporation) resets `bpo_verification_status` to `pending` for re-approval and sets every DIR authorization for that BPO to `rejected`. After re-approval, link it again with a newly signed LOA (a new `loa_document_id`); resending the old one keeps the authorization `rejected`. Re-sending an unchanged value does not reset anything. If Number Reputation is enabled on the enterprise, `legal_name`, `doing_business_as`, `website`, `fein`, `industry`, `number_of_employees`, `organization_physical_address`, `organization_contact`, and `dun_bradstreet_number` cannot be changed: the request is rejected with `400`.' operationId: updateEnterprise tags: - Enterprises parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseUpdate' example: legal_name: Acme Plumbing LLC doing_business_as: Acme Plumbing organization_legal_type: llc industry: business number_of_employees: 51-200 jurisdiction_of_incorporation: Delaware website: https://acmeplumbing.example.com fein: 12-3456789 customer_reference: internal-ref-2026Q2 organization_contact: first_name: Sam last_name: Owner email: sam@acmeplumbing.example.com job_title: Compliance Lead phone_number: '+13125550000' billing_contact: first_name: Alex last_name: Bill email: billing@acmeplumbing.example.com phone_number: '+13125550001' organization_physical_address: country: US administrative_area: IL city: Chicago postal_code: '60601' street_address: 100 Main St billing_address: country: US administrative_area: IL city: Chicago postal_code: '60601' street_address: 100 Main St responses: '200': description: Enterprise updated. content: application/json: schema: $ref: '#/components/schemas/EnterprisePublicWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '401': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /enterprises/{enterprise_id}/branded_calling: post: summary: Activate Branded Calling on an enterprise description: 'Branded Calling must be activated on each enterprise. Activation is idempotent: - First call: marks the enterprise as activated, effective immediately; you can create a DIR right away. The enterprise is registered with the Branded Calling platform later, after its first DIR is approved. Returns `200` with `branded_calling_enabled: true`. - Re-call after success: no-op, returns the same enterprise body. - Re-call after a failed registration: re-queues the registration, returns `200`. Prerequisite: the calling user must have agreed to the Branded Calling Terms of Service (`POST /terms_of_service/branded_calling/agree`). Without that, this endpoint returns `403 terms_of_service_not_accepted`. Failure modes: - `400` - the account has no available credit. Add funds and retry. - `400` - the enterprise is not in the United States. Branded Calling is currently available only to US enterprises. - `403` - Branded Calling Terms of Service not accepted. - `404` - enterprise does not exist or does not belong to your account. **Pricing:** Activation itself is free, but the account must have available credit. Branded Calling fees are charged per DIR and per branded call. See https://telnyx.com/pricing/branded-calling for current pricing.' operationId: activateBrandedCalling tags: - Enterprises parameters: - $ref: '#/components/parameters/EnterpriseId' responses: '200': description: Branded Calling activated. content: application/json: schema: $ref: '#/components/schemas/EnterprisePublicWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /enterprises/{enterprise_id}/dir: get: summary: List DIRs in an enterprise description: 'Return the DIRs (Display Identity Records) belonging to a single enterprise. Pagination is JSON:API style (`page[number]`, `page[size]`, max 250). Supports `filter[]` query params: `filter[status]`, `filter[display_name][contains]`, `filter[call_reason][contains]`, plus the renewal-window filters `filter[expiring_at][gte]` / `filter[expiring_at][lte]` and the convenience `filter[expiring_within_days]` (mutually exclusive with the explicit gte/lte form). Sortable by `created_at`, `updated_at`, `display_name`, `status`, `submitted_at`, `verified_at`, `expiring_at` (prefix `-` for descending; default `-created_at`).' operationId: listDirsForEnterprise tags: - Display Identity Records parameters: - $ref: '#/components/parameters/EnterpriseId' - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' - name: sort in: query required: false description: 'Sort field. Allowed: `created_at`, `updated_at`, `display_name`, `status`, `submitted_at`, `verified_at`, `expiring_at`. Prefix with `-` for descending. Default `-created_at`.' schema: type: string default: -created_at enum: - created_at - -created_at - updated_at - -updated_at - display_name - -display_name - status - -status - submitted_at - -submitted_at - verified_at - -verified_at - expiring_at - -expiring_at - name: filter[expiring_at][gte] in: query required: false description: Return only DIRs whose `expiring_at` is at or after this ISO-8601 timestamp. schema: type: string format: date-time - name: filter[expiring_at][lte] in: query required: false description: Return only DIRs whose `expiring_at` is at or before this ISO-8601 timestamp. schema: type: string format: date-time - name: filter[expiring_within_days] in: query required: false description: 'Convenience: returns DIRs whose `expiring_at` falls within the next N days (1–365). Equivalent to setting `filter[expiring_at][gte]=` + `filter[expiring_at][lte]=`. Mutually exclusive with the explicit `[gte]`/`[lte]` filters - combining returns 400.' schema: type: integer minimum: 1 maximum: 365 - name: filter[status] in: query required: false description: Filter by DIR status. schema: $ref: '#/components/schemas/DirStatus' - name: filter[display_name][contains] in: query required: false description: Case-insensitive partial match on display name. schema: type: string - name: filter[call_reason][contains] in: query required: false description: Case-insensitive partial match on call reason. schema: type: string responses: '200': description: Paginated list of DIRs. content: application/json: schema: $ref: '#/components/schemas/DirList' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' post: summary: Create a Display Identity Record (DIR) description: 'Create a new DIR under the given enterprise. The DIR starts in `draft` status; it must be submitted (`POST .../submit`) and approved by Telnyx before any phone number can be attached. **Field rules** - `display_name`: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients. - `call_reasons`: 1–10 strings, each ≤64 characters; describe why your business calls customers (e.g. ''Appointment reminders'', ''Billing inquiries''). Validate the wording against `POST /call_reasons/validate`. - `logo_url`: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time. - `documents`: up to 20 entries; each `document_id` must be obtained by uploading the file via the Telnyx Documents API first. Within one DIR a `document_id` may only appear once. - `certify_brand_is_accurate`, `certify_no_shaft_content`, `certify_ip_ownership` MUST all be `true`. **Failure modes** - `400` - validation error; `errors[].source.pointer` names the offending field. - `400` - a certification field is not `true`. - `400` - Branded Calling not activated on this enterprise (see `POST /enterprises/{id}/branded_calling`). - `400` - the enterprise is a BPO enterprise (`role_type` `bpo`), which cannot own a DIR. - `400` - a `bpo_authorizations` entry is not an approved BPO enterprise in your account, or its `loa_document_id` could not be validated. - `404` - enterprise does not exist or does not belong to your account. - `503` - the document check is temporarily unavailable; retry.' operationId: createDir tags: - Display Identity Records parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DirCreateRequest' examples: minimal: summary: Minimal payload (no logo, no documents) description: The smallest payload that creates a DIR. You can attach the logo and supporting documents later via PATCH; the DIR can also be submitted without a logo, but a verified DIR with no logo will not display caller artwork. value: display_name: Acme Plumbing reselling: false certify_brand_is_accurate: true certify_no_shaft_content: true certify_ip_ownership: true authorizer_name: Sam Owner authorizer_email: sam@acmeplumbing.example.com call_reasons: - Appointment reminders - Billing inquiries full: summary: Full payload with logo and supporting document description: Replace `logo_url` with a publicly-reachable HTTPS URL to your own 256×256 BMP. Replace `document_id` with the id returned by the Telnyx Documents API after you upload your supporting document. value: display_name: Acme Plumbing reselling: false certify_brand_is_accurate: true certify_no_shaft_content: true certify_ip_ownership: true authorizer_name: Sam Owner authorizer_email: sam@acmeplumbing.example.com logo_url: https://acmeplumbing.example.com/logo-256.bmp call_reasons: - Appointment reminders - Billing inquiries documents: - document_id: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c document_type: business_registration description: Certificate of incorporation. responses: '201': description: DIR created in `draft` status. content: application/json: schema: $ref: '#/components/schemas/DirWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /enterprises/{enterprise_id}/reputation: delete: summary: Disable phone-number reputation for an enterprise description: Disable Phone Number Reputation. All registered numbers are de-registered as a cascade. The enterprise itself is unaffected. Returns `204` on success, `404` if reputation is not enabled for this enterprise. operationId: disableReputationSettings tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' responses: '204': description: 204 (no body) '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' get: summary: Get phone-number reputation settings for an enterprise description: 'Phone Number Reputation tracks how your outbound caller-IDs are perceived (spam risk, engagement, etc.) across the call-screening ecosystem. This endpoint reads the enterprise-level settings: whether the product is enabled, the refresh cadence, and the stored Letter of Authorization document id. Returns `404` if reputation has never been enabled for this enterprise.' operationId: getReputationSettings tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' responses: '200': description: Reputation settings. content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationPublicWrapped' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' post: summary: Enable phone-number reputation for an enterprise description: 'Activate Phone Number Reputation for the given enterprise. Requires an uploaded Letter of Authorization document (the `loa_document_id` references the Telnyx Documents API) and a refresh-frequency selection. After activation, individual phone numbers can be registered via `POST .../reputation/numbers`. **Prerequisite**: the calling user must have agreed to the Phone Number Reputation Terms of Service (`POST /terms_of_service/number_reputation/agree`). Failure modes: - `403` - Phone Number Reputation Terms of Service not accepted. - `404` - enterprise does not exist or does not belong to your account. - `400` - reputation already enabled for this enterprise. - `422` - `loa_document_id` missing or `check_frequency` invalid. **Pricing:** This is a billable action. See https://telnyx.com/pricing/numbers for current pricing.' operationId: enableReputationSettings tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationCreate' example: loa_document_id: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c check_frequency: business_daily responses: '201': description: Reputation enabled. content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationPublicWrapped' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/external_verification: get: summary: Get the ownership-proof review status description: Get the review status of the enterprise's ownership proof for phone numbers hosted with another provider. Returns 404 when no proof has been submitted. operationId: getReputationExternalVerification tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' responses: '200': description: The ownership-proof review. content: application/json: schema: $ref: '#/components/schemas/ExternalVerificationWrapped' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' post: summary: Submit ownership proof for numbers hosted elsewhere description: Request permission to add phone numbers that the enterprise owns but that are hosted with another provider. Submit one or more uploaded documents proving ownership, such as a carrier invoice or account statement. The request is reviewed once per enterprise. While it is `pending` or `rejected` you can submit again to replace the documents; once `approved` it cannot be changed. operationId: submitReputationExternalVerification tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExternalVerificationSubmit' example: document_ids: - 2a7e8337-e803-4057-a4ae-26c40eb0bc6c responses: '201': description: The ownership proof was submitted for review. content: application/json: schema: $ref: '#/components/schemas/ExternalVerificationWrapped' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '503': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/frequency: patch: summary: Change the reputation refresh frequency description: 'Update how often Telnyx refreshes the reputation data for this enterprise''s registered numbers. The new frequency takes effect on the next scheduled refresh. The enterprise''s reputation must be in `approved` status. A request made while the status is `pending` is rejected with `400 Bad Request`.' operationId: updateReputationFrequency tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationUpdateFrequency' example: check_frequency: weekly responses: '200': description: Frequency updated. content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationPublicWrapped' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/loa: patch: summary: Replace the reputation Letter of Authorization document description: Point the enterprise's reputation settings at a new signed LOA document. This resets LOA approval to `pending`; the new document must be approved before additional phone numbers can be added. operationId: replaceReputationLoa tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationLoaUpdate' example: loa_document_id: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c responses: '200': description: Updated reputation settings. content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationPublicWrapped' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' post: summary: Render a phone-number reputation Letter of Authorization description: Render the LOA for this enterprise as a PDF. The enterprise identity, address, and authorized-representative contact are taken from the enterprise record; the optional `agent` block is supplied only when a third-party partner manages the numbers. The response is the PDF itself (unsigned unless a `signature` is provided). Sign it and upload it to the Telnyx Documents API (`POST /v2/documents`, see https://developers.telnyx.com/api/documents) to obtain the `loa_document_id` required by `POST .../reputation`. operationId: generateReputationLoa tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationLoaRender' example: {} responses: '200': description: Rendered LOA PDF. content: application/pdf: schema: type: string format: binary '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '403': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/numbers: get: summary: List reputation-monitored phone numbers for an enterprise description: Paginated list of phone numbers registered for reputation monitoring under this enterprise. The response includes the latest reputation snapshot per number where one has been collected. operationId: listReputationNumbers tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' - $ref: '#/components/parameters/BcPageNumber' - name: page[size] in: query description: Items per page. Default 10. Maximum 250; values above are clamped to 250. required: false schema: type: integer minimum: 1 maximum: 250 default: 10 example: 10 - 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[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 of numbers with reputation data. content: application/json: schema: $ref: '#/components/schemas/ReputationPhoneNumberListWithReputation' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' post: summary: Register phone numbers for reputation monitoring description: 'Add up to 100 phone numbers to reputation monitoring on this enterprise. Each must be in E.164 format (`+1NPANXXXXXX` for US/CA). A number in your Telnyx phone-number inventory is accepted as `source: telnyx`; a number that is not is treated as hosted with another provider and must meet the requirements below. **Prerequisite**: reputation must already be enabled on this enterprise (see `POST .../reputation`). **Pricing:** This is a billable action. See https://telnyx.com/pricing/numbers for current pricing. A phone number that is not in your Telnyx inventory is treated as a number hosted with another provider (`source: external`). It must be a US local number, and the enterprise''s ownership proof must be approved first (`POST /enterprises/{enterprise_id}/reputation/external_verification`); otherwise the request fails with a 400 whose `detail` contains `external_verification_required`. Ownership of such numbers is checked every day.' operationId: associateReputationNumbers tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReputationPhoneNumberCreate' example: phone_numbers: - '+19493253498' - '+12134445566' responses: '201': description: Numbers registered. content: application/json: schema: $ref: '#/components/schemas/ReputationPhoneNumberList' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '503': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/numbers/refresh: post: summary: Force a reputation refresh description: 'Immediately refresh the stored reputation data for the listed numbers. This is in addition to the periodic refresh determined by `check_frequency`. Up to 100 numbers per call. The response carries the kicked-off jobs; the actual refresh runs asynchronously. **Pricing:** Forcing a refresh performs live reputation lookups, which are billable. See https://telnyx.com/pricing/numbers for current pricing.' operationId: refreshReputationNumbers tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RefreshReputationRequest' example: phone_numbers: - '+19493253498' responses: '200': description: Refresh completed (the call is synchronous from the customer's POV - Telnyx fans out to the reputation feed before responding). content: application/json: schema: $ref: '#/components/schemas/RefreshReputationResponse' default: $ref: '#/components/responses/number-reputation_GenericErrorResponse' 4XX: $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/numbers/{phone_number}: delete: summary: Remove a phone number from reputation monitoring description: Stop tracking the reputation of this phone number. The number itself remains in your inventory; only the reputation registration is removed. operationId: disassociateReputationNumber tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' - $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 single reputation-monitored phone number description: Retrieve one registered number with its latest reputation snapshot. The `phone_number` path parameter is in E.164 format and must be URL-encoded (e.g. `%2B19493253498`). operationId: getPhoneNumberReputation tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' - $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' '403': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/numbers/{phone_number}/ownership: get: summary: Get a phone number's ownership tracking detail description: Get the ownership status of a phone number, when it was last checked, the carrier recorded as its baseline, and the history of ownership events. operationId: getReputationNumberOwnership tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' - $ref: '#/components/parameters/PhoneNumberPath' responses: '200': description: Ownership tracking detail. content: application/json: schema: $ref: '#/components/schemas/ReputationNumberOwnershipWrapped' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/numbers/{phone_number}/ownership_confirm: post: summary: Confirm or give up ownership of a phone number description: 'Answer an ownership question about a phone number hosted with another provider. Send `still_own: true` to confirm you still own a number whose `ownership_status` is `pending_confirmation` or `flagged`; its status returns to `verified` and, after a carrier change, the new carrier becomes the one on record. Send `still_own: false` to report that you no longer own the number. It is removed from Number Reputation immediately, whatever its current status, and the response shows it with `ownership_status: removed`.' operationId: confirmReputationNumberOwnership tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' - $ref: '#/components/parameters/PhoneNumberPath' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OwnershipConfirmRequest' example: still_own: true responses: '200': description: The phone number after the confirmation, or the removed number. content: application/json: schema: $ref: '#/components/schemas/ReputationPhoneNumberWithReputation' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '503': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/remediation: get: summary: List reputation remediation requests for an enterprise description: Paginated list of remediation requests for this enterprise. List items omit per-number results and webhook URLs to keep the response small; call GET by id for full detail. Supports JSON:API pagination and optional filters on status and created-at range. operationId: listReputationRemediations tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' - name: filter[status] in: query required: false description: Filter by customer-facing status. schema: $ref: '#/components/schemas/RemediationStatus' - name: filter[created_at][gte] in: query required: false description: Only requests created on or after this timestamp (ISO 8601). schema: type: string format: date-time example: '2026-01-01T00:00:00Z' - name: filter[created_at][lte] in: query required: false description: Only requests created on or before this timestamp (ISO 8601). schema: type: string format: date-time example: '2026-12-31T23:59:59Z' responses: '200': description: Paginated list of remediation requests. content: application/json: schema: $ref: '#/components/schemas/RemediationRequestList' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' post: summary: Submit phone numbers for reputation remediation description: 'Submit a batch of phone numbers belonging to this enterprise for reputation remediation. The request is accepted asynchronously: this endpoint returns `202` with the persisted request id, then the request transitions through processing states until completion. Use the GET endpoints to poll status and per-number results. Each phone number must be in E.164 format and belong to this enterprise. A number that already has an in-flight remediation request is rejected.' operationId: submitReputationRemediation tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RemediationRequestCreate' example: phone_numbers: - '+19493253498' - '+12134445566' call_purpose: Appointment reminders for our dental clinic. contact_email: ops@example.com webhook_url: https://example.com/webhooks/remediation responses: '202': description: Remediation request accepted and persisted. content: application/json: schema: $ref: '#/components/schemas/RemediationRequestWrapped' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '409': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '422': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/remediation/{remediation_id}: get: summary: Get a reputation remediation request description: Retrieve the full detail of a remediation request, including current status, per-number results (once available), and submission metadata. operationId: getReputationRemediation tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' - name: remediation_id in: path description: The remediation request id. Lowercase UUID. required: true schema: type: string format: uuid example: b7c1f1c0-7a9d-4f0a-9d3e-2f6a1c4b8e21 responses: '200': description: The remediation request. content: application/json: schema: $ref: '#/components/schemas/RemediationRequestWrapped' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/reputation/webhook: patch: summary: Set the number-ownership webhook URL description: 'Set the HTTPS URL that receives number-ownership events for this enterprise: `number_reputation.number.flagged`, `number_reputation.number.removed` and `number_reputation.external_verification.status_changed`. Send `webhook_url: null` to stop receiving them.' operationId: updateReputationWebhook tags: - Reputation parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationWebhookUpdate' example: webhook_url: https://example.com/webhooks/telnyx responses: '200': description: Updated reputation settings. content: application/json: schema: $ref: '#/components/schemas/EnterpriseReputationPublicWrapped' '400': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /enterprises/{enterprise_id}/verify_email: post: tags: - Email Verification summary: Send an email-ownership verification code to an enterprise operationId: requestEnterpriseEmailVerification description: 'Email a 6-digit code to the enterprise account''s contact email to confirm ownership of that address. A BPO (Business Process Outsourcer) account has no DIR, so it proves ownership of its own contact email here rather than through a DIR. A BPO account cannot be approved for use until this contact email is verified. The code expires in 15 minutes. Requesting a new code invalidates any previous one. Resends are rate limited (a short cooldown plus a daily cap). Submit the code to `POST /enterprises/{enterprise_id}/verify_email/confirm`.' parameters: - $ref: '#/components/parameters/EnterpriseId' responses: '200': description: A code was emailed; the current verification state is returned. content: application/json: schema: $ref: '#/components/schemas/EnterpriseEmailVerificationStatusWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '429': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '503': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /enterprises/{enterprise_id}/verify_email/confirm: post: tags: - Email Verification summary: Confirm an enterprise email-ownership verification code operationId: confirmEnterpriseEmailVerification description: 'Submit the 6-digit code that was emailed to the enterprise account''s contact email. On success the contact email is marked verified. For security, any failure (wrong, expired, already-used, or too many attempts) returns the same generic message.' parameters: - $ref: '#/components/parameters/EnterpriseId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EnterpriseEmailVerificationConfirmRequest' responses: '200': description: The contact email is verified. content: application/json: schema: $ref: '#/components/schemas/EnterpriseEmailVerificationStatusWrapped' '400': $ref: '#/components/responses/branded-calling_GenericErrorResponse' '404': $ref: '#/components/responses/branded-calling_GenericErrorResponse' /external_connections: get: description: This endpoint returns a list of your External Connections inside the 'data' attribute of the response. External Connections are used by Telnyx customers to seamless configure SIP trunking integrations with Telnyx Partners, through External Voice Integrations in Mission Control Portal. summary: List all External Connections operationId: ListExternalConnections tags: - External Connections x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/FilterConnectionsConsolidated' - $ref: '#/components/parameters/external-voice-integrations_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object title: Get All External Connections Response properties: data: type: array items: $ref: '#/components/schemas/ExternalConnection' meta: $ref: '#/components/schemas/external-voice-integrations_PaginationMeta' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found post: description: Creates a new External Connection based on the parameters sent in the request. The external_sip_connection and outbound voice profile id are required. Once created, you can assign phone numbers to your application using the `/phone_numbers` endpoint. summary: Creates an External Connection operationId: CreateExternalConnection tags: - External Connections x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be set when creating a External Connection required: true content: application/json: schema: $ref: '#/components/schemas/CreateExternalConnectionRequest' responses: '201': description: Successful response content: application/json: schema: type: object title: External Connection Response properties: data: $ref: '#/components/schemas/ExternalConnection' '422': description: Bad request /external_connections/log_messages: get: description: Retrieve a list of log messages for all external connections associated with your account. summary: List all log messages operationId: ListExternalConnectionLogMessages tags: - External Connections parameters: - $ref: '#/components/parameters/FilterLogMessagesConsolidated' - $ref: '#/components/parameters/external-voice-integrations_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object title: List Log Messages Response properties: log_messages: type: array items: $ref: '#/components/schemas/LogMessage' meta: $ref: '#/components/schemas/external-voice-integrations_PaginationMeta' '401': description: Unauthorized '422': description: Bad request /external_connections/log_messages/{id}: delete: description: Dismiss a log message for an external connection associated with your account. summary: Dismiss a log message operationId: DeleteExternalConnectionLogMessage tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Dismiss request was successful properties: success: type: boolean description: Describes wether or not the operation was successful example: success: true '401': description: Unauthorized '404': description: Resource not found get: description: Retrieve a log message for an external connection associated with your account. summary: Retrieve a log message operationId: GetExternalConnectionLogMessage tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Get Log Message Response properties: log_messages: type: array items: $ref: '#/components/schemas/LogMessage' minItems: 1 maxItems: 1 '401': description: Unauthorized '404': description: Resource not found /external_connections/{id}: delete: description: Permanently deletes an External Connection. Deletion may be prevented if the application is in use by phone numbers, is active, or if it is an Operator Connect connection. To remove an Operator Connect integration please contact Telnyx support. summary: Deletes an External Connection operationId: DeleteExternalConnection tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' responses: '200': description: Successful response content: application/json: schema: type: object title: External Connection Response properties: data: $ref: '#/components/schemas/ExternalConnection' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request get: description: Return the details of an existing External Connection inside the 'data' attribute of the response. summary: Retrieve an External Connection operationId: GetExternalConnection tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' responses: '200': description: Successful response content: application/json: schema: type: object title: External Connection Response properties: data: $ref: '#/components/schemas/ExternalConnection' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request patch: description: Updates settings of an existing External Connection based on the parameters of the request. summary: Update an External Connection operationId: UpdateExternalConnection tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' requestBody: description: Parameters to be updated for the External Connection required: true content: application/json: schema: $ref: '#/components/schemas/UpdateExternalConnectionRequest' responses: '200': description: Successful response content: application/json: schema: type: object title: External Connection Response properties: data: $ref: '#/components/schemas/ExternalConnection' '401': description: Unauthorized '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: $ref: '#/components/schemas/external-voice-integrations_ErrorResponse' example: errors: - detail: A previous update to this connection is still in progress. Please try again later. '422': description: Bad request /external_connections/{id}/civic_addresses: get: description: Returns the civic addresses and locations from Microsoft Teams. summary: List all civic addresses and locations operationId: ListCivicAddresses tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/FilterCivicAddressesConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object title: Get All Civic Addresses Response properties: data: type: array items: $ref: '#/components/schemas/CivicAddress' '401': description: Unauthorized '404': description: Not found '500': description: Unexpected Error '502': description: Bad Gateway /external_connections/{id}/civic_addresses/{address_id}: get: description: Return the details of an existing Civic Address with its Locations inside the 'data' attribute of the response. summary: Retrieve a Civic Address operationId: GetExternalConnectionCivicAddress tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/address_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Get Civic Address Response properties: data: $ref: '#/components/schemas/CivicAddress' '401': description: Unauthorized '404': description: Not found '500': description: Unexpected Error '502': description: Bad Gateway /external_connections/{id}/locations/{location_id}: patch: summary: Update a location's static emergency address operationId: updateLocation tags: - External Connections parameters: - name: id in: path required: true description: The ID of the external connection schema: type: string format: uuid - name: location_id in: path required: true description: The ID of the location to update schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: static_emergency_address_id: type: string format: uuid description: A new static emergency address ID to update the location with required: - static_emergency_address_id example: static_emergency_address_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: Location successfully updated with no associated orders to process content: application/json: schema: $ref: '#/components/schemas/LocationResponse' example: data: location_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 static_emergency_address_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 accepted_address_suggestions: false '202': description: Location update accepted; associated orders being processed content: application/json: schema: $ref: '#/components/schemas/LocationResponse' '404': description: Location or external connection not found content: application/json: schema: $ref: '#/components/schemas/external-voice-integrations_ErrorResponse' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. '422': description: Unprocessable Entity - Location already has an accepted emergency address content: application/json: schema: $ref: '#/components/schemas/external-voice-integrations_ErrorResponse' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. description: Update the static emergency address assigned to a specific location of an external connection. /external_connections/{id}/phone_numbers: get: description: Returns a list of all active phone numbers associated with the given external connection. summary: List all phone numbers operationId: ListExternalConnectionPhoneNumbers tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/FilterPhoneNumbersConsolidated' - $ref: '#/components/parameters/external-voice-integrations_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object title: List External Connection Phone Numbers Response properties: data: type: array items: $ref: '#/components/schemas/ExternalConnectionPhoneNumber' meta: $ref: '#/components/schemas/external-voice-integrations_PaginationMeta' '401': description: Unauthorized '404': description: Not found '422': description: Bad request /external_connections/{id}/phone_numbers/{phone_number_id}: get: description: Return the details of a phone number associated with the given external connection. summary: Retrieve a phone number operationId: GetExternalConnectionPhoneNumber tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/phone_number_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Get External Connection Phone Number Response properties: data: $ref: '#/components/schemas/ExternalConnectionPhoneNumber' '401': description: Unauthorized '404': description: Not found patch: description: Asynchronously update settings of the phone number associated with the given external connection. summary: Update a phone number operationId: UpdateExternalConnectionPhoneNumber tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/phone_number_id' requestBody: description: Values that can be set when updating a phone number required: true content: application/json: schema: $ref: '#/components/schemas/UpdateExternalConnectionPhoneNumberRequest' example: location_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: Successful response content: application/json: schema: type: object title: Get External Connection Phone Number Response properties: data: $ref: '#/components/schemas/ExternalConnectionPhoneNumber' '401': description: Unauthorized '404': description: Not found '422': description: Bad request /external_connections/{id}/releases: get: description: Returns a list of your Releases for the given external connection. These are automatically created when you change the `connection_id` of a phone number that is currently on Microsoft Teams. summary: List all Releases operationId: ListExternalConnectionReleases tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/FilterReleasesConsolidated' - $ref: '#/components/parameters/external-voice-integrations_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object title: List Releases Response properties: data: type: array items: $ref: '#/components/schemas/Release' meta: $ref: '#/components/schemas/external-voice-integrations_PaginationMeta' '401': description: Unauthorized '404': description: Not found '422': description: Bad request /external_connections/{id}/releases/{release_id}: get: description: Return the details of a Release request and its phone numbers. summary: Retrieve a Release request operationId: GetExternalConnectionRelease tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/release_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Get Release Response properties: data: $ref: '#/components/schemas/Release' '401': description: Unauthorized '404': description: Not found /external_connections/{id}/uploads: get: description: Returns a list of your Upload requests for the given external connection. summary: List all Upload requests operationId: ListExternalConnectionUploads tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/FilterUploadsConsolidated' - $ref: '#/components/parameters/external-voice-integrations_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object title: List Uploads Response properties: data: type: array items: $ref: '#/components/schemas/Upload' meta: $ref: '#/components/schemas/external-voice-integrations_PaginationMeta' '401': description: Unauthorized '404': description: Not found '422': description: Bad request post: description: Creates a new Upload request to Microsoft teams with the included phone numbers. Only one of civic_address_id or location_id must be provided, not both. The maximum allowed phone numbers for the numbers_ids array is 1000. summary: Creates an Upload request operationId: CreateExternalConnectionUpload tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' requestBody: description: Parameters that can be set when creating an Upload request. required: true content: application/json: schema: $ref: '#/components/schemas/CreateExternalConnectionUploadRequest' responses: '202': description: Upload request accepted. Track progress via GET /external_connections/{id}/uploads/status, or per ticket via GET /external_connections/{id}/uploads/{ticket_id}. content: application/json: schema: type: object title: Create Upload request Response properties: success: type: boolean description: Describes wether or not the operation was successful ticket_id: type: string format: uuid description: Ticket id of the upload request example: success: true ticket_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 '401': description: Unauthorized '404': description: Not found '413': description: Payload too large. The maximum allowed phone numbers for the numbers_ids array is 1000. '422': description: Unprocessable Entity '504': description: Gateway Timeout /external_connections/{id}/uploads/refresh: post: description: Forces a recheck of the status of all pending Upload requests for the given external connection in the background. summary: Refresh the status of all Upload requests operationId: RefreshExternalConnectionUploads tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Create Upload request Response properties: success: type: boolean description: Describes wether or not the operation was successful example: success: true '401': description: Unauthorized '404': description: Not found '409': description: Status refresh is still in progress, please wait before calling again /external_connections/{id}/uploads/status: get: description: Returns the count of all pending upload requests for the given external connection. summary: Get the count of pending upload requests operationId: GetExternalConnectionUploadsStatus tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Get Uploads Status Response properties: data: type: object properties: pending_numbers_count: type: integer description: The count of phone numbers that are pending assignment to the external connection. pending_orders_count: type: integer description: The count of number uploads that have not yet been uploaded to Microsoft. example: data: pending_numbers_count: 0 pending_orders_count: 0 '401': description: Unauthorized '404': description: Not found /external_connections/{id}/uploads/{ticket_id}: get: description: Return the details of an Upload request and its phone numbers. summary: Retrieve an Upload request operationId: GetExternalConnectionUpload tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/ticket_id' responses: '200': description: Successful response content: application/json: schema: type: object title: Get Upload Response properties: data: $ref: '#/components/schemas/Upload' '401': description: Unauthorized '404': description: Not found /external_connections/{id}/uploads/{ticket_id}/retry: post: description: If there were any errors during the upload process, this endpoint will retry the upload request. In some cases this will reattempt the existing upload request, in other cases it may create a new upload request. Please check the ticket_id in the response to determine if a new upload request was created. summary: Retry an Upload request operationId: RetryUpload tags: - External Connections parameters: - $ref: '#/components/parameters/external-voice-integrations_id' - $ref: '#/components/parameters/ticket_id' responses: '202': description: Retry accepted. Track the upload via GET /external_connections/{id}/uploads/{ticket_id}. content: application/json: schema: type: object title: Get Upload Response properties: data: $ref: '#/components/schemas/Upload' '401': description: Unauthorized '404': description: Not found '409': description: Order is still in progress, please wait before retrying '422': description: Unprocessable Entity /external_requirements/{regulatory_requirement_id}/sub_number_orders/{sub_number_order_id}: get: summary: Get action requirement details for a sub number order description: Returns the input fields an action requirement needs and the current requirement action for a sub number order. Action requirements are fulfilled by an external step rather than by uploading documents. Australia mobile ID verification is currently the only action requirement. Once a verification link has been generated, it is returned in `requirement_action.value`. operationId: getExternalRequirement tags: - Requirement Groups parameters: - name: regulatory_requirement_id in: path required: true description: The ID of the regulatory (action) requirement. For Australia mobile ID verification this is `b7c72fb8-fa08-4529-aaf6-b9117d3f3698`. schema: type: string format: uuid - name: sub_number_order_id in: path required: true description: The ID of the sub number order the requirement belongs to. schema: type: string format: uuid responses: '200': description: Action requirement details retrieved successfully. content: application/json: schema: type: object properties: data: type: object properties: regulatory_requirement_id: type: string format: uuid fields_required: type: array description: The fields the end user must provide to fulfill this requirement. items: type: object properties: name: type: string description: The field name to send inside the `requirement` object on the POST. example: first_name type: type: string example: string description: type: string example: First Name value: type: - string - 'null' description: The value already stored for this field, or null if not yet provided. requirement_action: type: object properties: type: type: string description: The type of action the end user must complete. value: type: - string - 'null' description: The action value. For ID verification this is the verification link URL, or null until it has been generated. example: data: regulatory_requirement_id: a5b8f1d2-3c4e-4f6a-8b9c-0d1e2f3a4b5c fields_required: - name: first_name type: string description: First Name value: null - name: last_name type: string description: Last Name value: null requirement_action: type: id_verification value: null '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' post: summary: Fulfill an action requirement for a sub number order description: Submits the end user's details to the external verification provider and returns the requirement action. Australia mobile ID verification is currently the only action requirement. It generates a unique Onfido verification link, returned in `requirement_action.value`, which you share with the end user. The end user's `first_name` and `last_name` must be nested inside a `requirement` object; sending them at the top level is rejected. operationId: createExternalRequirement tags: - Requirement Groups parameters: - name: regulatory_requirement_id in: path required: true description: The ID of the regulatory (action) requirement. For Australia mobile ID verification this is `b7c72fb8-fa08-4529-aaf6-b9117d3f3698`. schema: type: string format: uuid - name: sub_number_order_id in: path required: true description: The ID of the sub number order the requirement belongs to. schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object required: - requirement properties: requirement: type: object description: The end user's identity details for the action requirement. Australia mobile ID verification is currently the only action requirement. It requires `first_name` and `last_name`, the same fields the corresponding GET lists in `fields_required`. required: - first_name - last_name properties: first_name: type: string description: The end user's first name. last_name: type: string description: The end user's last name. example: requirement: first_name: Jane last_name: Doe responses: '200': description: Action requirement submitted successfully. content: application/json: schema: type: object properties: data: type: object properties: sub_order_id: type: string format: uuid regulatory_requirement_id: type: string format: uuid requirement_action: type: object properties: type: type: string value: type: - string - 'null' description: For Australia mobile ID verification, the unique Onfido verification link to share with the end user. example: data: sub_order_id: 5f8e6b1a-2d3c-4e5f-9a0b-1c2d3e4f5a6b regulatory_requirement_id: a5b8f1d2-3c4e-4f6a-8b9c-0d1e2f3a4b5c requirement_action: type: id_verification value: https://verify.onfido.com/v/8f3c2a1b-9d4e-4f6a-8b9c-0d1e2f3a4b5c '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' /fax_applications: get: description: This endpoint returns a list of your Fax Applications inside the 'data' attribute of the response. You can adjust which applications are listed by using filters. Fax Applications are used to configure how you send and receive faxes using the Programmable Fax API with Telnyx. summary: List all Fax Applications operationId: ListFaxApplications tags: - Programmable Fax Applications x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/PageConsolidated' - $ref: '#/components/parameters/programmable-fax_FilterConsolidated' - $ref: '#/components/parameters/programmable-fax_SortApplication' responses: '200': description: Successful response content: application/json: schema: type: object title: Get All Fax Applications Response properties: data: type: array items: $ref: '#/components/schemas/FaxApplication' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/programmable-fax_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/programmable-fax_UnauthorizedResponse' post: description: Creates a new Fax Application based on the parameters sent in the request. The application name and webhook URL are required. Once created, you can assign phone numbers to your application using the `/phone_numbers` endpoint. summary: Creates a Fax Application operationId: CreateFaxApplication tags: - Programmable Fax Applications x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be set when creating a Fax Application required: true content: application/json: schema: $ref: '#/components/schemas/CreateFaxApplicationRequest' responses: '201': description: Successful response content: application/json: schema: type: object title: Fax Application Response properties: data: $ref: '#/components/schemas/FaxApplication' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/programmable-fax_UnauthorizedResponse' '422': $ref: '#/components/responses/programmable-fax_UnprocessableEntityResponse' /fax_applications/{id}: delete: description: Permanently deletes a Fax Application. Deletion may be prevented if the application is in use by phone numbers. summary: Deletes a Fax Application operationId: DeleteFaxApplication tags: - Programmable Fax Applications parameters: - $ref: '#/components/parameters/id' responses: '200': description: Successful response content: application/json: schema: type: object title: Fax Application Response properties: data: $ref: '#/components/schemas/FaxApplication' '400': $ref: '#/components/responses/programmable-fax_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/programmable-fax_UnauthorizedResponse' '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' get: description: Return the details of an existing Fax Application inside the 'data' attribute of the response. summary: Retrieve a Fax Application operationId: GetFaxApplication tags: - Programmable Fax Applications parameters: - $ref: '#/components/parameters/id' responses: '200': description: Successful response content: application/json: schema: type: object title: Fax Application Response properties: data: $ref: '#/components/schemas/FaxApplication' '400': $ref: '#/components/responses/programmable-fax_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/programmable-fax_UnauthorizedResponse' '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' patch: description: Updates settings of an existing Fax Application based on the parameters of the request. summary: Update a Fax Application operationId: UpdateFaxApplication tags: - Programmable Fax Applications parameters: - $ref: '#/components/parameters/id' requestBody: description: Parameters to be updated for the Fax Application required: true content: application/json: schema: $ref: '#/components/schemas/UpdateFaxApplicationRequest' responses: '200': description: Successful response content: application/json: schema: type: object title: Fax Application Response properties: data: $ref: '#/components/schemas/FaxApplication' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/programmable-fax_UnauthorizedResponse' '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' '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/programmable-fax_ErrorResponse' example: errors: - detail: A previous update to this connection is still in progress. Please try again later. '422': $ref: '#/components/responses/programmable-fax_UnprocessableEntityResponse' /faxes: get: summary: View a list of faxes description: Retrieve a paginated list of faxes sent or received on your account. operationId: ListFaxes x-latency-category: background tags: - Programmable Fax Commands parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[created_at][gte], filter[created_at][gt], filter[created_at][lte], filter[created_at][lt], filter[direction][eq], filter[from][eq], filter[to][eq]' schema: type: object properties: created_at: type: object properties: gte: type: string format: date-time example: '2020-02-02T22:25:27.521992Z' description: ISO 8601 date time for filtering faxes created after or on that date gt: type: string format: date-time example: '2020-02-02T22:25:27.521992Z' description: ISO 8601 date time for filtering faxes created after that date lte: type: string format: date-time example: '2020-02-02T22:25:27.521992Z' description: ISO 8601 formatted date time for filtering faxes created on or before that date lt: type: string format: date-time example: '2020-02-02T22:25:27.521992Z' description: ISO 8601 formatted date time for filtering faxes created before that date description: Date range filtering operations for fax creation timestamp direction: type: object properties: eq: type: string example: inbound description: The direction, inbound or outbound, for filtering faxes sent from this account description: Direction filtering operations from: type: object properties: eq: type: string example: '+13127367276' description: The phone number, in E.164 format for filtering faxes sent from this number description: From number filtering operations to: type: object properties: eq: type: string example: '+13127367276' description: The phone number, in E.164 format for filtering faxes sent to this number description: To number filtering operations - name: page in: query style: deepObject explode: true description: 'Consolidated pagination parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer example: 2 description: Number of fax resources for the single page returned number: type: integer example: 2 description: Number of the page to be retrieved responses: '200': description: List faxes response content: application/json: schema: type: object title: List Faxes Response properties: data: type: array items: $ref: '#/components/schemas/Fax' meta: $ref: '#/components/schemas/PaginationMeta' '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' default: $ref: '#/components/responses/programmable-fax_GenericErrorResponse' post: summary: Send a fax operationId: SendFax description: 'Send a fax. Files have size limits and page count limit validations. If a file is bigger than 50MB or has more than 350 pages it will fail with `file_size_limit_exceeded` and `page_count_limit_exceeded` respectively. **Supported file formats:** - PDF (`application/pdf`) - TIFF (`application/tiff`, `image/tiff`) - JPEG (`image/jpeg`) - PNG (`image/png`) - Microsoft Word `.doc` (`application/msword`) - Microsoft Word `.docx` (`application/vnd.openxmlformats-officedocument.wordprocessingml.document`) - Rich Text Format `.rtf` (`application/rtf`) - Plain text `.txt` (`text/plain`) **Expected Webhooks:** - `fax.queued` - `fax.media.processed` - `fax.sending.started` - `fax.delivered` - `fax.failed`' tags: - Programmable Fax Commands requestBody: description: Send fax request required: true content: application/json: schema: $ref: '#/components/schemas/SendFaxRequest' multipart/form-data: schema: $ref: '#/components/schemas/SendFaxMultipartRequest' responses: '202': description: Fax queued for sending. Track its progress by polling GET /faxes/{id} with the returned fax id. content: application/json: schema: type: object title: Send Fax Response properties: data: $ref: '#/components/schemas/Fax' '422': $ref: '#/components/responses/programmable-fax_UnprocessableEntityResponse' default: $ref: '#/components/responses/programmable-fax_GenericErrorResponse' /faxes/{id}: delete: summary: Delete a fax operationId: DeleteFax tags: - Programmable Fax Commands parameters: - name: id in: path description: The unique identifier of a fax. required: true schema: type: string format: uuid responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' default: $ref: '#/components/responses/programmable-fax_GenericErrorResponse' description: Delete a fax resource from your account. get: summary: View a fax operationId: ViewFax tags: - Programmable Fax Commands parameters: - name: id in: path description: The unique identifier of a fax. required: true schema: type: string format: uuid responses: '200': description: Get fax response content: application/json: schema: type: object title: Get Fax Response properties: data: $ref: '#/components/schemas/Fax' '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' default: $ref: '#/components/responses/programmable-fax_GenericErrorResponse' description: Returns the details of a single fax, including its current status. /faxes/{id}/actions/cancel: post: summary: Cancel a fax description: 'Cancel the outbound fax that is in one of the following states: `queued`, `media.processed`, `originated` or `sending` ' operationId: CancelFax tags: - Programmable Fax Commands parameters: - name: id in: path description: The unique identifier of a fax. required: true schema: type: string format: uuid responses: '202': description: Successful response upon accepting cancel fax command content: application/json: schema: type: object title: Successful response upon accepting cancel fax command example: data: result: ok properties: data: type: object properties: result: type: string example: ok '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' '422': $ref: '#/components/responses/programmable-fax_UnprocessableEntityResponse' default: $ref: '#/components/responses/programmable-fax_GenericErrorResponse' /faxes/{id}/actions/refresh: post: summary: Refresh a fax description: Refreshes the inbound fax's media_url when it has expired operationId: RefreshFax tags: - Programmable Fax Commands parameters: - name: id in: path description: The unique identifier of a fax. required: true schema: type: string format: uuid responses: '200': description: Refresh fax response content: application/json: schema: type: object title: Refresh Fax Response example: data: result: ok properties: data: type: object properties: result: type: string example: ok '404': $ref: '#/components/responses/programmable-fax_NotFoundResponse' default: $ref: '#/components/responses/programmable-fax_GenericErrorResponse' /fqdn_connections: get: description: Returns a list of your FQDN connections. summary: List FQDN connections operationId: ListFqdnConnections tags: - FQDN 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 FQDN connections. content: application/json: schema: type: object title: List FQDN Connections Response properties: data: type: array items: $ref: '#/components/schemas/FqdnConnection' meta: $ref: '#/components/schemas/connections_PaginationMeta' '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' post: description: Creates a new FQDN-based SIP connection. FQDN connections authenticate by your registered domain names rather than static IP addresses. summary: Create an FQDN connection operationId: CreateFqdnConnection tags: - FQDN Connections x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be defined during FQDN connection creation required: true content: application/json: schema: $ref: '#/components/schemas/CreateFqdnConnectionRequest' responses: '201': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Connection Response properties: data: $ref: '#/components/schemas/FqdnConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /fqdn_connections/{fqdn_connection_id}/fqdn_authentication: get: description: Retrieves the details of an existing FQDN authentication strategy for a specific FQDN connection. summary: Retrieve an FQDN authentication operationId: RetrieveFqdnAuthentication tags: - FQDN Connections parameters: - $ref: '#/components/parameters/FqdnConnectionId' responses: '200': description: Successful response with details about the FQDN authentication. content: application/json: schema: type: object title: FQDN Authentication Response properties: data: $ref: '#/components/schemas/FqdnAuthentication' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' patch: description: Updates the FQDN authentication strategy for a specific FQDN connection. summary: Update an FQDN authentication operationId: UpdateFqdnAuthentication tags: - FQDN Connections parameters: - $ref: '#/components/parameters/FqdnConnectionId' requestBody: description: Parameters that can be updated in an FQDN authentication required: false content: application/json: schema: $ref: '#/components/schemas/UpdateFqdnAuthenticationRequest' responses: '200': description: Successful response with the updated FQDN authentication. content: application/json: schema: type: object title: FQDN Authentication Response properties: data: $ref: '#/components/schemas/FqdnAuthentication' '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' /fqdn_connections/{id}: delete: description: Permanently deletes the specified FQDN connection from your account. summary: Delete an FQDN connection operationId: DeleteFqdnConnection tags: - FQDN Connections parameters: - $ref: '#/components/parameters/connections_id' responses: '200': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Connection Response properties: data: $ref: '#/components/schemas/FqdnConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' get: description: Retrieves the details of an existing FQDN connection. summary: Retrieve an FQDN connection operationId: RetrieveFqdnConnection tags: - FQDN Connections parameters: - $ref: '#/components/parameters/connections_id' responses: '200': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Connection Response properties: data: $ref: '#/components/schemas/FqdnConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' patch: description: Updates settings of an existing FQDN connection. summary: Update an FQDN connection operationId: UpdateFqdnConnection tags: - FQDN Connections parameters: - $ref: '#/components/parameters/connections_id' requestBody: description: Parameters that can be updated in a FQDN connection required: true content: application/json: schema: $ref: '#/components/schemas/UpdateFqdnConnectionRequest' responses: '200': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Connection Response properties: data: $ref: '#/components/schemas/FqdnConnection' '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' /fqdns: get: summary: List FQDNs description: Get all FQDNs belonging to the user that match the given filters. operationId: ListFqdns tags: - FQDNs x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/connections_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[connection_id], filter[fqdn], filter[port], filter[dns_record_type]' schema: type: object properties: connection_id: type: string description: ID of the FQDN connection to which the FQDN belongs. fqdn: type: string example: example.com description: FQDN represented by the resource. port: type: integer example: 5060 description: Port to use when connecting to the FQDN. dns_record_type: type: string example: a description: DNS record type used by the FQDN. responses: '200': description: Successful response with a list of FQDN connections. content: application/json: schema: type: object title: List FQDNs Response properties: data: type: array items: $ref: '#/components/schemas/Fqdn' meta: $ref: '#/components/schemas/connections_PaginationMeta' '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' post: description: Creates a new FQDN record and attaches it to the specified connection. summary: Create an FQDN operationId: CreateFqdn tags: - FQDNs x-endpoint-cost: medium requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateFqdnRequest' responses: '201': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Response properties: data: $ref: '#/components/schemas/Fqdn' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /fqdns/{id}: delete: description: Permanently deletes the specified FQDN record from its connection. summary: Delete an FQDN operationId: DeleteFqdn tags: - FQDNs parameters: - $ref: '#/components/parameters/FqdnId' responses: '200': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Response properties: data: $ref: '#/components/schemas/Fqdn' '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: Return the details regarding a specific FQDN. summary: Retrieve an FQDN operationId: RetrieveFqdn tags: - FQDNs parameters: - $ref: '#/components/parameters/FqdnId' responses: '200': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Response properties: data: $ref: '#/components/schemas/Fqdn' '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 the details of the specified FQDN record and returns the updated FQDN. summary: Update an FQDN operationId: UpdateFqdn tags: - FQDNs parameters: - $ref: '#/components/parameters/FqdnId' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateFqdnRequest' responses: '200': description: Successful response with details about an FQDN connection. content: application/json: schema: type: object title: FQDN Response properties: data: $ref: '#/components/schemas/Fqdn' '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' /global_ip_allowed_ports: get: summary: List all Global IP Allowed Ports description: Returns the ports allowed for Global IP traffic, for use when configuring Global IP resources. operationId: ListGlobalIpAllowedPorts tags: - Global IPs responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIPAllowedPort' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /global_ip_assignment_health: description: Global IP Assignment Health Check Metrics over time get: summary: Global IP Assignment Health Check Metrics operationId: GetGlobalIpAssignmentHealth tags: - Global IPs parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[global_ip_id][in], filter[global_ip_assignment_id][in]' schema: type: object properties: global_ip_id: oneOf: - type: string description: Filter by exact Global IP ID - type: object properties: in: type: string description: Filter by Global IP ID(s) separated by commas additionalProperties: false description: Filtering operations global_ip_assignment_id: oneOf: - type: string description: Filter by exact Global IP Assignment ID - type: object properties: in: type: string description: Filter by Global IP Assignment ID(s) separated by commas additionalProperties: false description: Filtering operations additionalProperties: false responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIpAssignmentHealthMetric' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' description: Retrieve health check metrics for your Global IP assignments. /global_ip_assignments: get: summary: List all Global IP assignments description: Returns a paginated list of your Global IP assignments, the links between Global IPs and the WireGuard peers that receive their traffic. operationId: ListGlobalIpAssignments tags: - Global IPs parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIpAssignment' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a Global IP assignment description: Assigns a Global IP to a WireGuard peer so traffic destined for the IP is delivered over that peer's tunnel. Assignment is asynchronous, so the request is accepted and completes in the background. operationId: CreateGlobalIpAssignment tags: - Global IPs requestBody: content: application/json: schema: $ref: '#/components/schemas/GlobalIpAssignment' required: true responses: '202': description: Assignment request accepted. Provisioning is asynchronous; poll GET /global_ip_assignments/{id} with the returned id to check status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIpAssignment' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /global_ip_assignments/usage: description: Global IP Assignment Usage Metrics over time get: summary: Global IP Assignment Usage Metrics operationId: GetGlobalIpAssignmentUsage tags: - Global IPs parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[global_ip_assignment_id][in], filter[global_ip_id][in]' schema: type: object properties: global_ip_assignment_id: oneOf: - type: string description: Filter by exact Global IP Assignment ID - type: object properties: in: type: string description: Filter by Global IP Assignment ID(s) separated by commas additionalProperties: false description: Filtering operations global_ip_id: oneOf: - type: string description: Filter by exact Global IP ID - type: object properties: in: type: string description: Filter by Global IP ID(s) separated by commas additionalProperties: false description: Filtering operations additionalProperties: false responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIpAssignmentUsageMetric' '422': $ref: '#/components/responses/netapps_GenericErrorResponse' default: $ref: '#/components/responses/netapps_GenericErrorResponse' x-latency-category: responsive description: Retrieve usage metrics for your Global IP assignments. /global_ip_assignments/{id}: delete: summary: Delete a Global IP assignment description: Deletes the specified Global IP assignment, detaching the Global IP from its WireGuard peer. operationId: DeleteGlobalIpAssignment tags: - Global IPs parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIpAssignment' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve a Global IP assignment description: Returns the details of a single Global IP assignment, including the Global IP and WireGuard peer it links. operationId: GetGlobalIpAssignment tags: - Global IPs parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIpAssignment' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update a Global IP assignment description: Updates the specified Global IP assignment with the provided fields and returns the updated assignment. operationId: UpdateGlobalIpAssignment tags: - Global IPs parameters: - $ref: '#/components/parameters/ResourceId' requestBody: content: application/json: schema: $ref: '#/components/schemas/GlobalIpAssignmentUpdate' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIpAssignment' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /global_ip_assignments_usage: description: Global IP Assignment Usage Metrics over time get: summary: Global IP Assignment Usage Metrics operationId: GetGlobalIpAssignmentUsage tags: - Global IPs parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[global_ip_assignment_id][in], filter[global_ip_id][in]' schema: type: object properties: global_ip_assignment_id: oneOf: - type: string description: Filter by exact Global IP Assignment ID - type: object properties: in: type: string description: Filter by Global IP Assignment ID(s) separated by commas additionalProperties: false description: Filtering operations global_ip_id: oneOf: - type: string description: Filter by exact Global IP ID - type: object properties: in: type: string description: Filter by Global IP ID(s) separated by commas additionalProperties: false description: Filtering operations additionalProperties: false responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIpAssignmentUsageMetric' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' description: Retrieve usage metrics for your Global IP assignments. /global_ip_health_check_types: get: summary: List all Global IP Health check types description: Returns the health check types available for Global IPs, for use when creating Global IP health checks. operationId: ListGlobalIpHealthCheckTypes tags: - Global IPs responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIpHealthCheckType' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /global_ip_health_checks: get: summary: List all Global IP health checks description: Returns a paginated list of the Global IP health checks configured on your account. operationId: ListGlobalIpHealthChecks tags: - Global IPs parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIPHealthCheck' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a Global IP health check description: Creates a health check for a Global IP to monitor the health of its assignments. Creation is asynchronous, so the request is accepted and the health check becomes active once provisioning completes. operationId: CreateGlobalIpHealthCheck tags: - Global IPs requestBody: content: application/json: schema: $ref: '#/components/schemas/GlobalIPHealthCheck' required: true responses: '202': description: Creation request accepted. Provisioning is asynchronous; poll GET /global_ip_health_checks/{id} with the returned id to check status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIPHealthCheck' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /global_ip_health_checks/{id}: delete: summary: Delete a Global IP health check description: Deletes the specified Global IP health check so it no longer monitors the Global IP's assignments. operationId: DeleteGlobalIpHealthCheck tags: - Global IPs parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIPHealthCheck' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve a Global IP health check description: Returns the details of a single Global IP health check, including its type and configuration. operationId: GetGlobalIpHealthCheck tags: - Global IPs parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIPHealthCheck' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /global_ip_latency: description: Global IP Latency Metrics over time get: summary: Global IP Latency Metrics operationId: GetGlobalIpLatency tags: - Global IPs parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[global_ip_id][in]' schema: type: object properties: global_ip_id: oneOf: - type: string description: Filter by exact Global IP ID - type: object properties: in: type: string description: Filter by Global IP ID(s) separated by commas additionalProperties: false description: Filtering operations additionalProperties: false responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIpLatencyMetric' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' description: Retrieve latency metrics measured for your Global IPs. /global_ip_protocols: get: summary: List all Global IP Protocols description: Returns the network protocols supported for Global IP traffic, for use when configuring Global IP resources. operationId: ListGlobalIpProtocols tags: - Global IPs responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIPProtocol' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /global_ip_usage: description: Global IP Usage Metrics over time get: summary: Global IP Usage Metrics operationId: GetGlobalIpUsage tags: - Global IPs parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[global_ip_id][in]' schema: type: object properties: global_ip_id: oneOf: - type: string description: Filter by exact Global IP ID - type: object properties: in: type: string description: Filter by Global IP ID(s) separated by commas additionalProperties: false description: Filtering operations additionalProperties: false responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIpUsageMetric' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' description: Retrieve usage metrics for your Global IPs. /global_ips: get: summary: List all Global IPs description: Returns a paginated list of the Global IPs on your account, including each IP's address and configuration. operationId: ListGlobalIps tags: - Global IPs parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GlobalIP' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a Global IP description: Requests creation of a new Global IP, a static IP address announced from the Telnyx network. Provisioning is asynchronous, so the request is accepted and the Global IP becomes available once provisioning completes. operationId: CreateGlobalIp tags: - Global IPs requestBody: content: application/json: schema: $ref: '#/components/schemas/GlobalIP' required: true responses: '202': description: Creation request accepted. Provisioning is asynchronous; poll GET /global_ips/{id} with the returned id to check status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIP' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /global_ips/{id}: delete: summary: Delete a Global IP description: Deletes the specified Global IP and releases its address back to Telnyx. operationId: DeleteGlobalIp tags: - Global IPs parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIP' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve a Global IP description: Returns the details of a single Global IP, including its address and current configuration. operationId: GetGlobalIp tags: - Global IPs parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GlobalIP' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /inbound_channels: get: summary: List your voice channels for US Zone description: Returns the US Zone voice channels for your account. voice channels allows you to use Channel Billing for calls to your Telnyx phone numbers. Please check the Telnyx Support Articles section for full information and examples of how to utilize Channel Billing. operationId: ListInboundChannels tags: - Voice Channels x-endpoint-cost: medium responses: '200': description: voice channels Response content: application/json: schema: type: object properties: data: type: object properties: channels: type: integer description: The current number of concurrent channels set for the account example: 7 record_type: description: Identifies the type of the response type: string example: inbound_channels '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. patch: summary: Update voice channels for US Zone operationId: UpdateOutboundChannels description: Update the number of Voice Channels for the US Zone. This allows your account to handle multiple simultaneous inbound calls to US numbers. Use this endpoint to increase or decrease your capacity based on expected call volume. tags: - Voice Channels x-endpoint-cost: medium requestBody: description: Voice channels update required: true content: application/json: schema: type: object required: - channels properties: channels: type: integer description: The new number of concurrent channels for the account example: 7 responses: '200': description: Expected Update response content: application/json: schema: type: object properties: data: type: object properties: channels: type: integer description: The number of channels set for the account example: 7 record_type: description: Identifies the type of the response type: string example: inbound_channels '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found default: description: Unexpected error content: application/json: schema: properties: errors: type: array items: 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 example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. /inexplicit_number_orders: get: summary: List inexplicit number orders description: Get a paginated list of inexplicit number orders. operationId: ListInexplicitNumberOrders tags: - Inexplicit Number Orders parameters: - name: page_number in: query description: The page number to load schema: type: integer minimum: 1 default: 1 - name: page_size in: query description: The size of the page schema: type: integer minimum: 1 maximum: 250 default: 20 responses: '200': description: Successful response with a list of inexplicit number orders. content: application/json: schema: type: object title: List Inexplicit Number Orders Response properties: data: type: array items: $ref: '#/components/schemas/InexplicitNumberOrderResponse' 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 an inexplicit number order description: Create an inexplicit number order to programmatically purchase phone numbers without specifying exact numbers. operationId: CreateInexplicitNumberOrder tags: - Inexplicit Number Orders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InexplicitNumberOrderRequest' example: ordering_groups: - country_iso: US count_requested: '5' phone_number_type: local administrative_area: CA features: - voice responses: '200': description: Successful response with details about an inexplicit number order. content: application/json: schema: type: object title: Inexplicit Number Order Response properties: data: $ref: '#/components/schemas/InexplicitNumberOrderResponse' example: data: id: string connection_id: string messaging_profile_id: string customer_reference: string billing_group_id: string ordering_groups: - country_iso: string phone_number_type: string count_requested: 0 count_allocated: 0 status: pending national_destination_code: string phone_number[starts_with]: string phone_number[ends_with]: string phone_number[contains]: string administrative_area: string strategy: always quickship: false exclude_held_numbers: false error_reason: string orders: - number_order_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sub_number_order_ids: - 3fa85f64-5717-4562-b3fc-2c963f66afa6 created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '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' /inexplicit_number_orders/{id}: get: summary: Retrieve an inexplicit number order description: Get an existing inexplicit number order by ID. operationId: RetrieveInexplicitNumberOrder tags: - Inexplicit Number Orders parameters: - name: id in: path required: true description: Identifies the inexplicit number order schema: type: string format: uuid responses: '200': description: Successful response with details about an inexplicit number order. content: application/json: schema: type: object title: Inexplicit Number Order Response properties: data: $ref: '#/components/schemas/InexplicitNumberOrderResponse' example: data: id: string connection_id: string messaging_profile_id: string customer_reference: string billing_group_id: string ordering_groups: - country_iso: string phone_number_type: string count_requested: 0 count_allocated: 0 status: pending national_destination_code: string phone_number[starts_with]: string phone_number[ends_with]: string phone_number[contains]: string administrative_area: string strategy: always quickship: false exclude_held_numbers: false error_reason: string orders: - number_order_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 sub_number_order_ids: - 3fa85f64-5717-4562-b3fc-2c963f66afa6 created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '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' /infringement_claims/{claim_id}: get: summary: Get an infringement claim description: Retrieve a single claim by id. Returns `404` if the claim does not exist or is not against a DIR you own. operationId: getInfringementClaim tags: - Infringement Claims parameters: - name: claim_id in: path required: true description: Claim id (lowercase UUID). schema: type: string format: uuid example: e379fbc8-cd83-4bef-a280-a0ac9d00dcf8 responses: '200': description: Claim. content: application/json: schema: $ref: '#/components/schemas/InfringementClaimWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /infringement_claims/{claim_id}/contest: post: summary: Contest an infringement claim description: 'Submit a written response and supporting documents disputing the claim. The first call moves the claim from `pending` to `contested`; subsequent calls append supplementary evidence without changing status. The `documents[]` you attach are aggregated across rounds in the claim''s `contest_documents` field. Only `pending` and `contested` claims accept new evidence. A `resolved` claim returns `400`. Failure modes: - `400` - the claim is `resolved` (terminal); cannot be contested further. - `404` - the claim does not exist or is not against a DIR you own. - `422` - `contest_notes` is too short (< 10 chars), too long (> 2000 chars), `documents` is > 20 entries, or a `document_id` is duplicated within the same submission.' operationId: contestInfringementClaim tags: - Infringement Claims parameters: - name: claim_id in: path description: Unique identifier of the claim. required: true schema: type: string format: uuid example: e379fbc8-cd83-4bef-a280-a0ac9d00dcf8 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InfringementClaimContest' example: contest_notes: We own the trademark outright; our registration precedes the claimant by three years. See attached certificate. documents: - document_id: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c document_type: trademark_registration description: USPTO trademark certificate. responses: '200': description: Updated claim, status `contested`. content: application/json: schema: $ref: '#/components/schemas/InfringementClaimWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /integration_secrets: get: tags: - Integration Secrets summary: List integration secrets description: Retrieve a list of all integration secrets configured by the user. operationId: list_integration_secrets parameters: - 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 title: Page Size example: 25 number: type: integer title: Page Number example: 1 examples: page[number]=1&page[size]=20: value: number: 1 size: 20 summary: First page with 20 results per page page[number]=2&page[size]=20: value: number: 2 size: 20 summary: Second page with 20 results per page page[number]=1&page[size]=50: value: number: 1 size: 50 summary: First page with 50 results per page - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[type]' schema: type: object properties: type: type: string title: Filter by type example: bearer enum: - bearer - basic examples: filter[type]=bearer: value: type: bearer summary: Filter results to only show bearer type secrets filter[type]=basic: value: type: basic summary: Filter results to only show basic authentication type secrets responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/IntegrationSecretsListData' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/integration-secrets_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. post: tags: - Integration Secrets summary: Create a secret description: Create a new secret with an associated identifier that can be used to securely integrate with other services. operationId: create_integration_secret requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateIntegrationSecretRequest' examples: bearer: value: identifier: my_secret type: bearer token: my_secret_value basic: value: identifier: my_secret type: basic username: my_username password: my_password responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/IntegrationSecretCreatedResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/integration-secrets_ErrorResponse' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. /integration_secrets/{id}: delete: tags: - Integration Secrets summary: Delete an integration secret description: Delete an integration secret given its ID. operationId: delete_integration_secret parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string title: Secret Id responses: '204': description: The resource was deleted successfully. '404': description: Secret Not found content: application/json: schema: $ref: '#/components/schemas/integration-secrets_ErrorResponse' example: errors: - code: Telnyx error code detail: Error details title: Error title /inventory_coverage: get: summary: Create an inventory coverage request description: Creates an inventory coverage request. If locality, npa or national_destination_code is used in groupBy, and no region or locality filters are used, the whole paginated set is returned. operationId: CreateInventoryCoverage tags: - Inventory Level parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[npa], filter[nxx], filter[administrative_area], filter[phone_number_type], filter[country_code], filter[count], filter[features], filter[groupBy]' schema: type: object properties: npa: type: integer description: Filter by npa nxx: type: integer description: Filter by nxx administrative_area: type: string description: Filter by administrative area phone_number_type: type: string description: Filter by phone number type enum: - local - toll_free - national - mobile - landline - shared_cost country_code: type: string description: Filter by country. Defaults to US enum: - AT - AU - BE - BG - CA - CH - CN - CY - CZ - DE - DK - EE - ES - FI - FR - GB - GR - HU - HR - IE - IT - LT - LU - LV - NL - NZ - MX - 'NO' - PL - PT - RO - SE - SG - SI - SK - US count: type: boolean description: Include count in the result features: type: array items: type: string enum: - sms - mms - voice - fax - emergency example: - voice - sms description: Filter if the phone number should be used for voice, fax, mms, sms, emergency. Returns features in the response when used. groupBy: type: string description: Filter to group results enum: - locality - npa - national_destination_code responses: '200': description: Successful response with a list of inventory coverage levels content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/InventoryCoverage' meta: $ref: '#/components/schemas/InventoryCoverageMetadata' '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' /invoices: get: summary: List invoices operationId: ListInvoices description: Returns a paginated list of your invoices, with support for sorting. parameters: - name: sort in: query description: Specifies the sort order for results. required: false schema: type: string example: period_start enum: - period_start - -period_start - 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 responses: '200': description: List of invoices content: application/json: schema: type: object properties: meta: type: object properties: total_results: type: integer example: 20 total_pages: type: integer example: 1 page_number: type: integer example: 1 page_size: type: integer example: 20 data: type: array items: $ref: '#/components/schemas/Invoice' '403': $ref: '#/components/responses/invoice_ForbiddenErrorResponse' default: $ref: '#/components/responses/invoice_GenericErrorResponse' /invoices/{id}: get: summary: Get invoice by ID operationId: GetInvoiceById description: Retrieve a single invoice by its unique identifier. parameters: - name: id in: path description: Invoice UUID required: true schema: type: string format: uuid - name: action in: query description: Invoice action required: false schema: type: string example: json enum: - json - link responses: '200': description: Get invoice details content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/InvoiceDetail' '400': $ref: '#/components/responses/invoice_BadRequestErrorResponse' '403': $ref: '#/components/responses/invoice_ForbiddenErrorResponse' '404': $ref: '#/components/responses/invoice_NotFoundErrorResponse' default: $ref: '#/components/responses/invoice_GenericErrorResponse' /ip_connections: get: description: Returns a paginated list of your IP-based SIP connections, with support for filtering and sorting. summary: List Ip connections operationId: ListIpConnections tags: - IP 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 IP connections. content: application/json: schema: type: object title: List Ip Connections Response properties: data: type: array items: $ref: '#/components/schemas/IpConnection' 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 new IP-based SIP connection, which authenticates traffic by source IP address. summary: Create an Ip connection operationId: CreateIpConnection tags: - IP Connections x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be defined during IP connection creation required: true content: application/json: schema: $ref: '#/components/schemas/CreateIpConnectionRequest' responses: '201': description: Successful response with details about an IP connection. content: application/json: schema: type: object title: Ip Connection Response properties: data: $ref: '#/components/schemas/IpConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /ip_connections/{id}: delete: description: Permanently deletes the specified IP connection from your account. summary: Delete an Ip connection operationId: DeleteIpConnection tags: - IP Connections parameters: - name: id in: path description: Identifies the type of resource. required: true schema: type: string responses: '200': description: Successful response with details about an IP connection. content: application/json: schema: type: object title: Ip Connection Response properties: data: $ref: '#/components/schemas/IpConnection' '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 ip connection. summary: Retrieve an Ip connection operationId: RetrieveIpConnection tags: - IP Connections parameters: - name: id in: path description: IP Connection ID required: true schema: type: string responses: '200': description: Successful response with details about an IP connection. content: application/json: schema: type: object title: Ip Connection Response properties: data: $ref: '#/components/schemas/IpConnection' '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 IP connection. summary: Update an Ip connection operationId: UpdateIpConnection tags: - IP Connections parameters: - name: id in: path description: Identifies the type of resource. required: true schema: type: string requestBody: description: Parameters that can be updated in a IP connection required: true content: application/json: schema: $ref: '#/components/schemas/UpdateIpConnectionRequest' responses: '200': description: Successful response with details about an IP connection. content: application/json: schema: type: object title: Ip Connection Response properties: data: $ref: '#/components/schemas/IpConnection' '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' /ips: get: summary: List Ips description: Get all IPs belonging to the user that match the given filters. operationId: ListIps tags: - IPs x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/connections_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[connection_id], filter[ip_address], filter[port]' schema: type: object properties: connection_id: type: string description: ID of the IP Connection to which this IP should be attached. ip_address: type: string example: 192.168.0.0 description: IP adddress represented by this resource. port: type: integer example: 5060 description: Port to use when connecting to this IP. responses: '200': description: Successful response with a list of IPs. content: application/json: schema: type: object title: List Ips Response properties: data: type: array items: $ref: '#/components/schemas/Ip' 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 new IP record for use with IP-based connections, associating an IP address with the specified connection. summary: Create an Ip operationId: CreateIp tags: - IPs x-endpoint-cost: medium requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateIpRequest' responses: '201': description: Successful response with details about an IP. content: application/json: schema: type: object title: Ip Response properties: data: $ref: '#/components/schemas/Ip' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /ips/{id}: delete: description: Permanently deletes the specified IP record from its connection. summary: Delete an Ip operationId: DeleteIp tags: - IPs parameters: - $ref: '#/components/parameters/IpId' responses: '200': description: Successful response with details about an IP. content: application/json: schema: type: object title: Ip Response properties: data: $ref: '#/components/schemas/Ip' '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: Return the details regarding a specific IP. summary: Retrieve an Ip operationId: RetrieveIp tags: - IPs parameters: - $ref: '#/components/parameters/IpId' responses: '200': description: Successful response with details about an IP. content: application/json: schema: type: object title: Ip Response properties: data: $ref: '#/components/schemas/Ip' '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 the details of the specified IP record and returns the updated IP. summary: Update an Ip operationId: UpdateIp tags: - IPs parameters: - $ref: '#/components/parameters/IpId' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateIpRequest' responses: '200': description: Successful response with details about an IP. content: application/json: schema: type: object title: Ip Response properties: data: $ref: '#/components/schemas/Ip' '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' /ledger_billing_group_reports: post: summary: Create a ledger billing group report deprecated: false description: Create a ledger billing group report, which aggregates ledger activity by billing group. operationId: CreateBillingGroupReport tags: - Reports parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NewLedgerBillingGroupReport' example: year: 2019 month: 10 responses: '200': description: Expected ledger billing group report response to a valid request content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/LedgerBillingGroupReport' headers: {} '401': $ref: '#/components/responses/GenericErrorResponse' '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' headers: {} /ledger_billing_group_reports/{id}: get: summary: Get a ledger billing group report deprecated: false description: Retrieve the details and status of a previously created ledger billing group report. operationId: GetBillingGroupReport tags: - Reports parameters: - name: id in: path description: The id of the ledger billing group report required: true example: f5586561-8ff0-4291-a0ac-84fe544797bd schema: type: string format: uuid responses: '200': description: Expected ledger billing group report response to a valid request content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/LedgerBillingGroupReport' headers: {} '401': $ref: '#/components/responses/GenericErrorResponse' '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' headers: {} /legacy/reporting/batch/detail/records/speech/to/text: get: tags: - Speech to Text Batch Reports summary: Get all Speech to Text batch report requests description: Retrieves all Speech to Text batch report requests for the authenticated user operationId: getSttRequests parameters: [] responses: '200': description: Speech to text batch report requests retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SttGetDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - Speech to Text Batch Reports summary: Create a new Speech to Text batch report request description: Creates a new Speech to Text batch report request with the specified filters operationId: submitSttRequest parameters: [] requestBody: description: Speech to Text batch report request data content: application/json: schema: $ref: '#/components/schemas/SttDetailedRequest' required: true responses: '200': description: Speech to text batch report request created successfully content: application/json: schema: $ref: '#/components/schemas/SttPostDetailReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch/detail/records/speech/to/text/{id}: delete: tags: - Speech to Text Batch Reports summary: Delete a Speech to Text batch report request description: Deletes a specific Speech to Text batch report request by ID operationId: deleteSttRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: Speech to text batch report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/SttDeleteDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - Speech to Text Batch Reports summary: Get a specific Speech to Text batch report request description: Retrieves a specific Speech to Text batch report request by ID operationId: getSttRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: Speech to text batch report request retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SttGetDetailReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch_detail_records/messaging: get: tags: - MDR Detailed Reports summary: Get all MDR detailed report requests description: Retrieves all MDR detailed report requests for the authenticated user operationId: getMdrRequests parameters: [] responses: '200': description: MDR detailed report requests retrieved successfully content: application/json: schema: $ref: '#/components/schemas/MdrGetDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - MDR Detailed Reports summary: Create a new MDR detailed report request description: Creates a new MDR detailed report request with the specified filters operationId: submitMdrRequest parameters: [] requestBody: description: MDR detailed report request data content: application/json: schema: $ref: '#/components/schemas/MdrDetailedRequest' required: true responses: '200': description: MDR detailed report request created successfully content: application/json: schema: $ref: '#/components/schemas/MdrPostDetailReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch_detail_records/messaging/{id}: delete: tags: - MDR Detailed Reports summary: Delete a MDR detailed report request description: Deletes a specific MDR detailed report request by ID operationId: deleteMdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: MDR detailed report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/MdrDeleteDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - MDR Detailed Reports summary: Get a specific MDR detailed report request description: Retrieves a specific MDR detailed report request by ID operationId: getMdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: MDR detailed report request retrieved successfully content: application/json: schema: $ref: '#/components/schemas/MdrGetDetailReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch_detail_records/speech_to_text: get: tags: - Speech to Text Batch Reports summary: Get all Speech to Text batch report requests description: Retrieves all Speech to Text batch report requests for the authenticated user operationId: getSttRequests parameters: [] responses: '200': description: Speech to text batch report requests retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SttGetDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - Speech to Text Batch Reports summary: Create a new Speech to Text batch report request description: Creates a new Speech to Text batch report request with the specified filters operationId: submitSttRequest parameters: [] requestBody: description: Speech to Text batch report request data content: application/json: schema: $ref: '#/components/schemas/SttDetailedRequest' required: true responses: '200': description: Speech to text batch report request created successfully content: application/json: schema: $ref: '#/components/schemas/SttPostDetailReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch_detail_records/speech_to_text/{id}: delete: tags: - Speech to Text Batch Reports summary: Delete a Speech to Text batch report request description: Deletes a specific Speech to Text batch report request by ID operationId: deleteSttRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: Speech to text batch report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/SttDeleteDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - Speech to Text Batch Reports summary: Get a specific Speech to Text batch report request description: Retrieves a specific Speech to Text batch report request by ID operationId: getSttRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: Speech to text batch report request retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SttGetDetailReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch_detail_records/voice: get: tags: - CDR Reports summary: Get all CDR report requests description: Retrieves all CDR report requests for the authenticated user operationId: getCdrRequests parameters: [] responses: '200': description: CDR report requests retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CdrGetDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - CDR Reports summary: Create a new CDR report request description: Creates a new CDR report request with the specified filters operationId: submitCdrRequest parameters: [] requestBody: description: CDR detailed report request data content: application/json: schema: $ref: '#/components/schemas/CdrDetailedRequest' required: true responses: '200': description: CDR report request created successfully content: application/json: schema: $ref: '#/components/schemas/CdrPostDetailReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch_detail_records/voice/fields: get: tags: - CDR Reports summary: Get available CDR report fields description: Retrieves all available fields that can be used in CDR reports operationId: getCdrsAvailableFields responses: '200': description: Available fields retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CdrAvailableFieldsResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy/reporting/batch_detail_records/voice/{id}: delete: tags: - CDR Reports summary: Delete a CDR report request description: Deletes a specific CDR report request by ID operationId: deleteCdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: CDR report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/CdrDeleteDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - CDR Reports summary: Get a specific CDR report request description: Retrieves a specific CDR report request by ID operationId: getCdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: CDR report request retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CdrGetDetailReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy/reporting/usage_reports/messaging: get: tags: - MDR Usage Reports summary: List MDR usage reports description: 'Fetch all previous requests for MDR usage reports. ' operationId: getMdrUsageReports parameters: - name: page in: query description: Page number schema: minimum: 1 type: integer format: int32 default: 1 - name: per_page in: query description: Size of the page schema: maximum: 250 minimum: 1 type: integer format: int32 default: 20 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/standard_MdrGetUsageReportsResponse_ffba4faa88' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/standard_ErrorResponse_ffba4faa88' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. x-latency-category: responsive post: tags: - MDR Usage Reports summary: Create a new legacy usage V2 MDR report request description: Creates a new legacy usage V2 MDR report request with the specified filters operationId: submitMdrUsageReport requestBody: description: MDR detail request data content: '*/*': schema: $ref: '#/components/schemas/MdrUsageRequestLegacy' required: true responses: '200': description: V2 legacy MDR usage report request created successfully content: application/json: schema: $ref: '#/components/schemas/MdrPostUsageReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy/reporting/usage_reports/messaging/{id}: delete: tags: - MDR Usage Reports summary: Delete a V2 legacy usage MDR report request description: Deletes a specific V2 legacy usage MDR report request by ID operationId: deleteMdrUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: V2 legacy usage MDR report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/MdrDeleteUsageReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - MDR Usage Reports summary: Get an MDR usage report description: Returns a single MDR (Message Detail Record) usage report by its identifier, including its parameters and current status. operationId: getMdrUsageReport 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/MdrGetUsageReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy/reporting/usage_reports/number_lookup: get: tags: - Telco Data Usage Reports summary: List telco data usage reports description: Retrieve a paginated list of telco data usage reports operationId: getTelcoDataUsageReports parameters: - name: page in: query description: Page number to retrieve (1-based). schema: type: integer format: int32 - name: per_page in: query description: Filter results by per page. schema: type: integer format: int32 responses: '200': description: Successfully retrieved telco data usage reports content: application/json: schema: $ref: '#/components/schemas/standard_TelcoDataGetUsageReportsResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - Telco Data Usage Reports summary: Submit telco data usage report description: Submits a new telco data (number lookup) usage report request. The report is generated asynchronously; retrieve it by its identifier once ready. operationId: submitTelcoDataUsageReport requestBody: description: Telco data usage request data content: '*/*': schema: $ref: '#/components/schemas/TelcoDataUsageRequest' required: true responses: '200': description: Successfully submitted telco data usage report content: application/json: schema: $ref: '#/components/schemas/TelcoDataPostUsageReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '422': description: Unprocessable entity '500': description: Internal server error x-latency-category: responsive /legacy/reporting/usage_reports/number_lookup/{id}: delete: tags: - Telco Data Usage Reports summary: Delete telco data usage report description: Delete a specific telco data usage report by its ID operationId: deleteTelcoDataUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string responses: '200': description: Successfully deleted telco data usage report '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - Telco Data Usage Reports summary: Get telco data usage report by ID description: Retrieve a specific telco data usage report by its ID operationId: getTelcoDataUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string responses: '200': description: Successfully retrieved telco data usage report content: application/json: schema: $ref: '#/components/schemas/TelcoDataGetUsageReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy/reporting/usage_reports/speech_to_text: get: tags: - Speech to text Usage Reports summary: Get speech to text usage report description: 'Generate and fetch speech to text usage report synchronously. This endpoint will both generate and fetch the speech to text report over a specified time period. ' operationId: getSttUsageReportSync 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-02T00: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' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/SttUsageReportResponse' example: {} '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/standard_ErrorResponse_ffba4faa88' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. x-latency-category: responsive /legacy/reporting/usage_reports/voice: get: tags: - CDR Usage Reports summary: List CDR usage reports description: 'Fetch all previous requests for cdr usage reports. ' operationId: getCdrUsageReports parameters: - name: page in: query description: Page number schema: minimum: 1 type: integer format: int32 default: 1 - name: per_page in: query description: Size of the page schema: maximum: 250 minimum: 1 type: integer format: int32 default: 20 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/standard_CdrGetUsageReportsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/standard_ErrorResponse_ffba4faa88' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. x-latency-category: responsive post: tags: - CDR Usage Reports summary: Create a new legacy usage V2 CDR report request description: Creates a new legacy usage V2 CDR report request with the specified filters operationId: submitCdrUsageReport requestBody: description: Cdr detail request data content: '*/*': schema: $ref: '#/components/schemas/UsageRequestLegacy' required: true responses: '200': description: V2 legacy CDR usage report request created successfully content: application/json: schema: $ref: '#/components/schemas/CdrPostUsageReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy/reporting/usage_reports/voice/{id}: delete: tags: - CDR Usage Reports summary: Delete a V2 legacy usage CDR report request description: Deletes a specific V2 legacy usage CDR report request by ID operationId: deleteCdrUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: V2 legacy usage CDR report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/CdrDeleteUsageReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - CDR Usage Reports summary: Get a CDR usage report description: Returns a single CDR (Call Detail Record) usage report by its identifier, including its parameters and current status. operationId: getCdrUsageReport 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/CdrGetUsageReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy_reporting/batch_detail_records/messaging: get: tags: - MDR Detailed Reports summary: Get all MDR detailed report requests description: Retrieves all MDR detailed report requests for the authenticated user operationId: getMdrRequests parameters: [] responses: '200': description: MDR detailed report requests retrieved successfully content: application/json: schema: $ref: '#/components/schemas/legacy_published_account_billing_usage_reports_MdrGetDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - MDR Detailed Reports summary: Create a new MDR detailed report request description: Creates a new MDR detailed report request with the specified filters operationId: submitMdrRequest parameters: [] requestBody: description: MDR detailed report request data content: application/json: schema: $ref: '#/components/schemas/MdrDetailedRequest' required: true responses: '200': description: MDR detailed report request created successfully content: application/json: schema: $ref: '#/components/schemas/MdrPostDetailReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy_reporting/batch_detail_records/messaging/{id}: delete: tags: - MDR Detailed Reports summary: Delete a MDR detailed report request description: Deletes a specific MDR detailed report request by ID operationId: deleteMdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: MDR detailed report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/MdrDeleteDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - MDR Detailed Reports summary: Get a specific MDR detailed report request description: Retrieves a specific MDR detailed report request by ID operationId: getMdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: MDR detailed report request retrieved successfully content: application/json: schema: $ref: '#/components/schemas/MdrGetDetailReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy_reporting/batch_detail_records/voice: get: tags: - CDR Reports summary: Get all CDR report requests description: Retrieves all CDR report requests for the authenticated user operationId: getCdrRequests parameters: [] responses: '200': description: CDR report requests retrieved successfully content: application/json: schema: $ref: '#/components/schemas/legacy_published_account_billing_usage_reports_CdrGetDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - CDR Reports summary: Create a new CDR report request description: Creates a new CDR report request with the specified filters operationId: submitCdrRequest parameters: [] requestBody: description: CDR detailed report request data content: application/json: schema: $ref: '#/components/schemas/CdrDetailedRequest' required: true responses: '200': description: CDR report request created successfully content: application/json: schema: $ref: '#/components/schemas/CdrPostDetailReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy_reporting/batch_detail_records/voice/fields: get: tags: - CDR Reports summary: Get available CDR report fields description: Retrieves all available fields that can be used in CDR reports operationId: getCdrsAvailableFields responses: '200': description: Available fields retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CdrAvailableFieldsResponse' '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy_reporting/batch_detail_records/voice/{id}: delete: tags: - CDR Reports summary: Delete a CDR report request description: Deletes a specific CDR report request by ID operationId: deleteCdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: CDR report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/CdrDeleteDetailReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - CDR Reports summary: Get a specific CDR report request description: Retrieves a specific CDR report request by ID operationId: getCdrRequest parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: CDR report request retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CdrGetDetailReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy_reporting/usage_reports/messaging: get: tags: - MDR Usage Reports summary: List MDR usage reports description: 'Fetch all previous requests for MDR usage reports. ' operationId: getMdrUsageReports parameters: - name: page in: query description: Page number schema: minimum: 1 type: integer format: int32 default: 1 - name: per_page in: query description: Size of the page schema: maximum: 250 minimum: 1 type: integer format: int32 default: 20 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/standard_MdrGetUsageReportsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/standard_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. x-latency-category: responsive post: tags: - MDR Usage Reports summary: Create a new legacy usage V2 MDR report request description: Creates a new legacy usage V2 MDR report request with the specified filters operationId: submitMdrUsageReport requestBody: description: MDR detail request data content: '*/*': schema: $ref: '#/components/schemas/MdrUsageRequestLegacy' required: true responses: '200': description: V2 legacy MDR usage report request created successfully content: application/json: schema: $ref: '#/components/schemas/MdrPostUsageReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy_reporting/usage_reports/messaging/{id}: delete: tags: - MDR Usage Reports summary: Delete a V2 legacy usage MDR report request description: Deletes a specific V2 legacy usage MDR report request by ID operationId: deleteMdrUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: V2 legacy usage MDR report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/MdrDeleteUsageReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - MDR Usage Reports summary: Get an MDR usage report description: Returns a single MDR (Message Detail Record) usage report by its identifier, including its parameters and current status. operationId: getMdrUsageReport 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/MdrGetUsageReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy_reporting/usage_reports/number_lookup: get: tags: - Telco Data Usage Reports summary: List telco data usage reports description: Retrieve a paginated list of telco data usage reports operationId: getTelcoDataUsageReports parameters: - name: page in: query description: Page number to retrieve (1-based). schema: type: integer format: int32 - name: per_page in: query description: Filter results by per page. schema: type: integer format: int32 responses: '200': description: Successfully retrieved telco data usage reports content: application/json: schema: $ref: '#/components/schemas/TelcoDataGetUsageReportsResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive post: tags: - Telco Data Usage Reports summary: Submit telco data usage report description: Submits a new telco data (number lookup) usage report request. The report is generated asynchronously; retrieve it by its identifier once ready. operationId: submitTelcoDataUsageReport requestBody: description: Telco data usage request data content: '*/*': schema: $ref: '#/components/schemas/TelcoDataUsageRequest' required: true responses: '200': description: Successfully submitted telco data usage report content: application/json: schema: $ref: '#/components/schemas/TelcoDataPostUsageReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '422': description: Unprocessable entity '500': description: Internal server error x-latency-category: responsive /legacy_reporting/usage_reports/number_lookup/{id}: delete: tags: - Telco Data Usage Reports summary: Delete telco data usage report description: Delete a specific telco data usage report by its ID operationId: deleteTelcoDataUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string responses: '200': description: Successfully deleted telco data usage report '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - Telco Data Usage Reports summary: Get telco data usage report by ID description: Retrieve a specific telco data usage report by its ID operationId: getTelcoDataUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string responses: '200': description: Successfully retrieved telco data usage report content: application/json: schema: $ref: '#/components/schemas/TelcoDataGetUsageReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /legacy_reporting/usage_reports/speech_to_text: get: tags: - Speech to text Usage Reports summary: Get speech to text usage report description: 'Generate and fetch speech to text usage report synchronously. This endpoint will both generate and fetch the speech to text report over a specified time period. ' operationId: getSttUsageReportSync 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-02T00: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' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/SttUsageReportResponse' example: {} '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/standard_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. x-latency-category: responsive /legacy_reporting/usage_reports/voice: get: tags: - CDR Usage Reports summary: List CDR usage reports description: 'Fetch all previous requests for cdr usage reports. ' operationId: getCdrUsageReports parameters: - name: page in: query description: Page number schema: minimum: 1 type: integer format: int32 default: 1 - name: per_page in: query description: Size of the page schema: maximum: 250 minimum: 1 type: integer format: int32 default: 20 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/CdrGetUsageReportsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/standard_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. x-latency-category: responsive post: tags: - CDR Usage Reports summary: Create a new legacy usage V2 CDR report request description: Creates a new legacy usage V2 CDR report request with the specified filters operationId: submitCdrUsageReport requestBody: description: Cdr detail request data content: '*/*': schema: $ref: '#/components/schemas/UsageRequestLegacy' required: true responses: '200': description: V2 legacy CDR usage report request created successfully content: application/json: schema: $ref: '#/components/schemas/CdrPostUsageReportResponse' '400': description: Invalid request parameters '401': description: Unauthorized '403': description: Forbidden '500': description: Internal server error x-latency-category: responsive /legacy_reporting/usage_reports/voice/{id}: delete: tags: - CDR Usage Reports summary: Delete a V2 legacy usage CDR report request description: Deletes a specific V2 legacy usage CDR report request by ID operationId: deleteCdrUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: V2 legacy usage CDR report request deleted successfully content: application/json: schema: $ref: '#/components/schemas/CdrDeleteUsageReportResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive get: tags: - CDR Usage Reports summary: Get a CDR usage report description: Returns a single CDR (Call Detail Record) usage report by its identifier, including its parameters and current status. operationId: getCdrUsageReport 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/CdrGetUsageReportByIdResponse' '401': description: Unauthorized '403': description: Forbidden '404': description: Report not found '500': description: Internal server error x-latency-category: responsive /list: get: summary: List All Numbers using Channel Billing description: Retrieve a list of all phone numbers using Channel Billing, grouped by Zone. operationId: GetAllNumbersChannelZones tags: - Voice Channels responses: '200': description: A list of numbers using GCB, grouped by channel zone content: application/json: schema: type: object properties: data: type: array items: type: object properties: zone_name: type: string example: Euro channel zone zone_id: type: string example: 1653e6a1-4bfd-4857-97c6-6a51e1c34477 number_of_channels: type: integer example: 7 numbers: type: array items: type: object properties: number: type: string example: '+15554441234' country: type: string example: FR meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found /list/{channel_zone_id}: get: summary: List Numbers using Channel Billing for a specific Zone description: Retrieve a list of phone numbers using Channel Billing for a specific Zone. operationId: GetNumbersChannelZones tags: - Voice Channels parameters: - $ref: '#/components/parameters/GcbChannelNumberZoneId' responses: '200': description: A list of numbers using GCB, grouped by channel zone content: application/json: schema: type: object properties: data: type: array items: type: object properties: zone_name: type: string example: Euro channel zone zone_id: type: string example: 1653e6a1-4bfd-4857-97c6-6a51e1c34477 number_of_channels: type: integer example: 7 numbers: type: array items: type: object properties: number: type: string example: '+15554441234' country: type: string example: FR meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found /llm_token_gateway/spend/events: get: operationId: get_ai_gateway_spend_events description: Return request-level usage history for the authenticated account. Supply both UTC dates or neither; omitting both returns the previous full UTC day. Dates use a half-open range [start_date, end_date) of at most 31 days. Cost reflects budget reference rates, not invoice charges. Unknown spend is excluded and reported separately. 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. Request tags can filter either report and metadata: can group the summary. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-spend_PageNumber' - $ref: '#/components/parameters/ai-gateway-spend_PageSize' - $ref: '#/components/parameters/Snapshot' - name: start_date in: query required: false schema: type: string format: date description: '' - name: end_date in: query required: false schema: type: string format: date description: '' - name: token_group_id in: query required: false schema: type: string format: uuid description: '' - name: token_user_id in: query required: false schema: type: string format: uuid description: '' - name: token_key_id in: query required: false schema: type: string format: uuid description: '' - name: end_user_id in: query required: false schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: '' - name: metadata in: query required: false style: deepObject explode: true schema: type: object 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]+$ description: 'Request tag filters as metadata[]=, 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-spend_GatewayError400' '401': $ref: '#/components/responses/GatewayError401' '403': $ref: '#/components/responses/GatewayError403' '404': $ref: '#/components/responses/GatewayError404' '409': $ref: '#/components/responses/ai-gateway-spend_GatewayError409' '412': $ref: '#/components/responses/GatewayError412' '428': $ref: '#/components/responses/GatewayError428' '429': $ref: '#/components/responses/GatewayError429' '503': $ref: '#/components/responses/ai-gateway-spend_GatewayError503' '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/SpendEvents' example: data: [] meta: page_number: 1 page_size: 20 has_more: false snapshot: 9b7e4a10-3c2d-4f5e-8a6b-1d2c3e4f5a60 summary: List gateway spend events tags: - AI Gateway /llm_token_gateway/spend/summary: get: operationId: get_ai_gateway_spend_summary description: Return request counts, token counts and reference spend grouped by one attribution dimension. Both UTC dates and group_by are required. Dates use a half-open range [start_date, end_date) of at most 31 days. Cost reflects budget reference rates, not invoice charges. Unknown spend is excluded and reported separately. 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. Request tags can filter either report and metadata: can group the summary. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-spend_PageNumber' - $ref: '#/components/parameters/ai-gateway-spend_PageSize' - $ref: '#/components/parameters/Snapshot' - name: start_date in: query required: true schema: type: string format: date description: '' - name: end_date in: query required: true schema: type: string format: date description: '' - name: token_group_id in: query required: false schema: type: string format: uuid description: '' - name: token_user_id in: query required: false schema: type: string format: uuid description: '' - name: token_key_id in: query required: false schema: type: string format: uuid description: '' - name: end_user_id in: query required: false schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: '' - name: metadata in: query required: false style: deepObject explode: true schema: type: object 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]+$ description: 'Request tag filters as metadata[]=, 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.' - name: group_by in: query required: true schema: $ref: '#/components/schemas/SpendGroupBy' description: A scope, or metadata: to group by one request tag's text-form value; requests without the key form one group with a null dimension_id. responses: '400': $ref: '#/components/responses/ai-gateway-spend_GatewayError400' '401': $ref: '#/components/responses/GatewayError401' '403': $ref: '#/components/responses/GatewayError403' '404': $ref: '#/components/responses/GatewayError404' '409': $ref: '#/components/responses/ai-gateway-spend_GatewayError409' '412': $ref: '#/components/responses/GatewayError412' '428': $ref: '#/components/responses/GatewayError428' '429': $ref: '#/components/responses/GatewayError429' '503': $ref: '#/components/responses/ai-gateway-spend_GatewayError503' '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/SpendSummary' example: data: [] meta: page_number: 1 page_size: 20 has_more: false snapshot: 9b7e4a10-3c2d-4f5e-8a6b-1d2c3e4f5a60 start_date: '2026-09-01' end_date: '2026-09-08' group_by: token_group summary: Get gateway spend summary tags: - AI Gateway /llm_token_gateway/token_groups: get: operationId: list_token_groups description: List gateway token groups within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_PageNumber' - $ref: '#/components/parameters/ai-gateway-resources_PageSize' - $ref: '#/components/parameters/Snapshot' responses: '400': $ref: '#/components/responses/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/GatewayError503' '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/TokenGroupList' example: data: [] meta: page_number: 1 page_size: 1 has_more: false snapshot: synthetic_snapshot summary: List gateway token groups tags: - AI Gateway post: operationId: create_token_groups description: Create gateway token group within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_IdempotencyKey' responses: '400': $ref: '#/components/responses/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/GatewayError503' '502': $ref: '#/components/responses/GatewayError502' '504': $ref: '#/components/responses/GatewayError504' '201': 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. ETag: schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Quoted integer resource version. content: application/json: schema: $ref: '#/components/schemas/TokenGroupResponse' example: data: record_type: token_group id: 11111111-1111-4111-8111-111111111111 created_at: '2026-10-07T08:00:00Z' updated_at: '2026-10-07T08:00:00Z' version: 1 name: support-backend max_budget: null budget_duration: 1d tpm_limit: null rpm_limit: null allowed_models: - Kimi-K3 - GLM-5.3-Flash cache_ttl: null provider_key_ids: [] guardrails: null fallbacks: null retries: null blocked: false spend: 0 reserved_spend: 0 budget_started_at: null resets_at: null max_parallel_requests: 20 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TokenGroupCreate' example: name: support-backend allowed_models: - Kimi-K3 - GLM-5.3-Flash max_parallel_requests: 20 fallbacks: Kimi-K3: - GLM-5.3-Flash retries: max_attempts: 2 retry_delay_ms: 250 backoff: exponential request_timeout_ms: 10000 summary: Create gateway token group tags: - AI Gateway /llm_token_gateway/token_groups/{id}: delete: operationId: delete_token_groups description: Revoke resource and its keys atomically; retain historical attribution, never detach into an ungoverned service key. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_IdempotencyKey' - $ref: '#/components/parameters/IfMatch' responses: '400': $ref: '#/components/responses/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/GatewayError503' '502': $ref: '#/components/responses/GatewayError502' '504': $ref: '#/components/responses/GatewayError504' '204': description: Deleted 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. summary: Delete gateway token group tags: - AI Gateway get: operationId: get_token_groups description: Get gateway token group within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. security: - telnyxApiKey: [] parameters: [] responses: '400': $ref: '#/components/responses/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/GatewayError503' '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. ETag: schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Quoted integer resource version. content: application/json: schema: $ref: '#/components/schemas/TokenGroupResponse' example: data: record_type: token_group id: 11111111-1111-4111-8111-111111111111 created_at: '2026-10-07T08:00:00Z' updated_at: '2026-10-07T08:00:00Z' version: 1 name: support-backend max_budget: null budget_duration: 1d tpm_limit: null rpm_limit: null allowed_models: - Kimi-K3 - GLM-5.3-Flash cache_ttl: null provider_key_ids: [] guardrails: null fallbacks: null retries: null blocked: false spend: 0 reserved_spend: 0 budget_started_at: null resets_at: null max_parallel_requests: 20 summary: Get gateway token group tags: - AI Gateway parameters: - name: id in: path required: true schema: type: string format: uuid description: '' patch: operationId: patch_token_groups description: Update gateway token group within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. Omitted fields are preserved. Null clears the optional concurrency, fallback and retry settings. A stale If-Match returns 412; read the resource again before updating. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_IdempotencyKey' - $ref: '#/components/parameters/IfMatch' responses: '400': $ref: '#/components/responses/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/GatewayError503' '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. ETag: schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Quoted integer resource version. content: application/json: schema: $ref: '#/components/schemas/TokenGroupResponse' example: data: record_type: token_group id: 11111111-1111-4111-8111-111111111111 created_at: '2026-10-07T08:00:00Z' updated_at: '2026-10-07T08:00:00Z' version: 1 name: support-backend max_budget: null budget_duration: 1d tpm_limit: null rpm_limit: null allowed_models: - Kimi-K3 - GLM-5.3-Flash cache_ttl: null provider_key_ids: [] guardrails: null fallbacks: null retries: null blocked: false spend: 0 reserved_spend: 0 budget_started_at: null resets_at: null max_parallel_requests: 20 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TokenGroupPatch' example: name: support-backend allowed_models: - Kimi-K3 - GLM-5.3-Flash max_parallel_requests: 20 fallbacks: Kimi-K3: - GLM-5.3-Flash retries: max_attempts: 2 retry_delay_ms: 250 backoff: exponential request_timeout_ms: 10000 summary: Update gateway token group tags: - AI Gateway /llm_token_gateway/token_keys: get: operationId: list_token_keys description: List gateway token keys within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_PageNumber' - $ref: '#/components/parameters/ai-gateway-resources_PageSize' - $ref: '#/components/parameters/Snapshot' - name: token_group_id in: query required: false schema: type: string format: uuid description: '' - name: token_user_id in: query required: false schema: type: string format: uuid description: '' responses: '400': $ref: '#/components/responses/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/GatewayError503' '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/TokenKeyList' example: data: [] meta: page_number: 1 page_size: 1 has_more: false snapshot: synthetic_snapshot summary: List gateway token keys tags: - AI Gateway post: operationId: create_token_keys description: Create gateway token key within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. The token secret is returned only on the original create response. A replay returns metadata without the secret. Provisioning is advisory; ready is not a guarantee of inference availability. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_IdempotencyKey' responses: '400': $ref: '#/components/responses/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/GatewayError503' '502': $ref: '#/components/responses/GatewayError502' '504': $ref: '#/components/responses/GatewayError504' '201': 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. ETag: schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Quoted integer resource version. content: application/json: schema: $ref: '#/components/schemas/TokenKeyCreatedResponse' example: data: record_type: token_key id: 11111111-1111-4111-8111-111111111111 created_at: '2026-10-07T08:00:00Z' updated_at: '2026-10-07T08:00:00Z' version: 1 name: support-backend token_group_id: 11111111-1111-4111-8111-111111111111 token_user_id: null max_budget: 1000 budget_duration: 1d tpm_limit: 10000000 rpm_limit: 6000 allowed_models: null expires_at: null blocked: false required_end_user_id: false spend: 0 reserved_spend: 0 budget_started_at: null resets_at: null token: ltg_sk_SYNTHETIC_EXAMPLE_NOT_A_VALID_CREDENTIAL max_parallel_requests: 5 provisioning: ready '200': description: 'Idempotency replay: metadata only; lost create response requires revoke/new create.' 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. ETag: schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Quoted integer resource version. content: application/json: schema: $ref: '#/components/schemas/TokenKeyResponse' example: data: record_type: token_key id: 11111111-1111-4111-8111-111111111111 created_at: '2026-10-07T08:00:00Z' updated_at: '2026-10-07T08:00:00Z' version: 1 name: support-backend token_group_id: 11111111-1111-4111-8111-111111111111 token_user_id: null max_budget: 1000 budget_duration: 1d tpm_limit: 10000000 rpm_limit: 6000 allowed_models: null expires_at: null blocked: false required_end_user_id: false spend: 0 reserved_spend: 0 budget_started_at: null resets_at: null max_parallel_requests: 5 provisioning: ready requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TokenKeyCreate' example: name: support-service token_group_id: 11111111-1111-4111-8111-111111111111 max_parallel_requests: 5 summary: Create gateway token key tags: - AI Gateway /llm_token_gateway/token_keys/{id}: delete: operationId: delete_token_keys description: Revoke this token key. Acknowledged revocation blocks new admissions with the key; requests already admitted may complete. Historical usage attribution is retained. Other keys in the group are unchanged. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_IdempotencyKey' - $ref: '#/components/parameters/IfMatch' responses: '400': $ref: '#/components/responses/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/GatewayError503' '502': $ref: '#/components/responses/GatewayError502' '504': $ref: '#/components/responses/GatewayError504' '204': description: Deleted 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. summary: Delete gateway token key tags: - AI Gateway get: operationId: get_token_keys description: Get gateway token key within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. security: - telnyxApiKey: [] parameters: [] responses: '400': $ref: '#/components/responses/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/GatewayError503' '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. ETag: schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Quoted integer resource version. content: application/json: schema: $ref: '#/components/schemas/TokenKeyResponse' example: data: record_type: token_key id: 11111111-1111-4111-8111-111111111111 created_at: '2026-10-07T08:00:00Z' updated_at: '2026-10-07T08:00:00Z' version: 1 name: support-backend token_group_id: 11111111-1111-4111-8111-111111111111 token_user_id: null max_budget: 1000 budget_duration: 1d tpm_limit: 10000000 rpm_limit: 6000 allowed_models: null expires_at: null blocked: false required_end_user_id: false spend: 0 reserved_spend: 0 budget_started_at: null resets_at: null max_parallel_requests: 5 provisioning: ready summary: Get gateway token key tags: - AI Gateway parameters: - name: id in: path required: true schema: type: string format: uuid description: '' patch: operationId: patch_token_keys description: Update gateway token key within the authenticated Telnyx account. Foreign and unknown resource IDs return the same 404 response. Omitted fields are preserved. Null clears max_parallel_requests; null resets budget and rate limits to their maximum. A stale If-Match returns 412. security: - telnyxApiKey: [] parameters: - $ref: '#/components/parameters/ai-gateway-resources_IdempotencyKey' - $ref: '#/components/parameters/IfMatch' responses: '400': $ref: '#/components/responses/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/GatewayError503' '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. ETag: schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Quoted integer resource version. content: application/json: schema: $ref: '#/components/schemas/TokenKeyResponse' example: data: record_type: token_key id: 11111111-1111-4111-8111-111111111111 created_at: '2026-10-07T08:00:00Z' updated_at: '2026-10-07T08:00:00Z' version: 1 name: support-backend token_group_id: 11111111-1111-4111-8111-111111111111 token_user_id: null max_budget: 1000 budget_duration: 1d tpm_limit: 10000000 rpm_limit: 6000 allowed_models: null expires_at: null blocked: false required_end_user_id: false spend: 0 reserved_spend: 0 budget_started_at: null resets_at: null max_parallel_requests: 5 provisioning: ready requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TokenKeyPatch' example: max_parallel_requests: 5 summary: Update gateway token key tags: - AI Gateway /llm_token_gateway/usage/export: get: operationId: exportGatewayUsage description: 'Durable, replayable, content-free usage export for customer pipelines. Requires the dedicated llm_token_gateway.usage_export.read V2 action; spend.read and usage.read do not grant it. Records are inference.request (one per immutable ledger revision; a correction adds a new id with supersedes, keep the highest revision per request_id) and guardrail.evaluation (one per guardrail event, including blocked prompts with no inference record; correlate on request_id). Delivery is at least once in commit order: deduplicate on id. Records appear after settlement and after every older database transaction has finished (meta.horizon_lag_seconds); keep polling with next_cursor, which is always returned and is reusable after has_more is false. After a logical database restore, restart from start_time and deduplicate on id; a cursor from before it may return 409 cursor_expired (no Retry-After). Retention promise 30 days. No prompts, responses, provider credentials, supplier or customer rates. Gateway reference/enforcement usage, not invoice truth or BYOK provider charges.' security: - telnyxApiKey: [] parameters: - name: limit in: query required: false schema: type: integer minimum: 1 maximum: 1000 default: 500 description: '' - name: cursor in: query required: false schema: type: string minLength: 1 maxLength: 512 pattern: ^[A-Za-z0-9_-]+$ description: Opaque next_cursor from a previous page; not combinable with start_time. Bound to the requested types; the account always comes from the credential. - name: start_time in: query required: false schema: type: string format: date-time description: 'First page only: RFC 3339 with offset, at most 30 days ago and not in the future; default now - 24h.' - name: types in: query required: false schema: type: string pattern: ^[a-z.]+(,[a-z.]+)?$ description: Comma-separated subset of inference.request,guardrail.evaluation; default both. 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/GatewayError40911' '412': $ref: '#/components/responses/GatewayError412' '428': $ref: '#/components/responses/GatewayError428' '429': $ref: '#/components/responses/GatewayError429' '503': $ref: '#/components/responses/UsageExportUnavailable' '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/UsageExportPage' example: data: [] meta: next_cursor: synthetic_cursor has_more: false horizon_lag_seconds: 0 summary: Export gateway usage tags: - AI Gateway /llm_token_gateway/usage/summary: get: operationId: gateway_usage_summary description: Gateway reference/enforcement usage, not invoice truth or BYOK provider charges. Requires the dedicated llm_token_gateway.usage.read V2 action for combined spend and guardrail reporting; existing spend.read and guardrail_events.read grants do not grant this endpoint. All totals, UTC daily buckets, models and latest 20 guardrail events share one database snapshot. UTC half-open dates, at most 31 days. Zero-filled days; at most 1000 models (503 rather than truncation on overflow/timeout). Known tokens sum independently known categories across latest attempt evidence, including corrections; unknown spend is excluded and unknown_requests/reserved_spend remain explicit. Guardrail counts count events, not distinct requests. No raw spend events, prompts or secrets. This read-only report creates no pagination snapshot and accepts no pagination parameters. security: - telnyxApiKey: [] parameters: - name: token_group_id in: query required: true schema: type: string format: uuid description: '' - name: start_date in: query required: true schema: type: string format: date description: '' - name: end_date in: query required: true schema: type: string format: date description: '' - name: metadata in: query required: false style: deepObject explode: true schema: type: object 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]+$ description: 'Request tag filters as metadata[]=, at most 5, combined with AND. A value matches the tag''s text form exactly (booleans as true/false, integers in decimal), so metadata[flag]=true matches both boolean true and the string "true". Keys are case-sensitive; reserved-prefix keys are rejected. Unindexed: bounded by the account, the date range and the report timeout.' responses: '400': $ref: '#/components/responses/ai-gateway_GatewayError400' '401': $ref: '#/components/responses/GatewayError401' '403': $ref: '#/components/responses/GatewayError403' '404': $ref: '#/components/responses/GatewayError404' '409': $ref: '#/components/responses/GatewayError409' '412': $ref: '#/components/responses/GatewayError412' '428': $ref: '#/components/responses/GatewayError428' '429': $ref: '#/components/responses/GatewayError429' '503': $ref: '#/components/responses/UsageSummaryUnavailable' '502': $ref: '#/components/responses/GatewayError502' '504': $ref: '#/components/responses/GatewayError504' '200': description: OK headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/GatewayUsage' example: data: totals: requests: 2 input_tokens: 120 output_tokens: 30 unknown_requests: 1 cache_hits: 0 succeeded_requests: 1 failed_requests: 0 partial_requests: 0 spend: 0.00045 reserved_spend: 0.01 by_day: - date: '2026-09-01' requests: 2 input_tokens: 120 output_tokens: 30 unknown_requests: 1 cache_hits: 0 succeeded_requests: 1 failed_requests: 0 partial_requests: 0 spend: 0.00045 reserved_spend: 0.01 by_model: - model: Qwen/Qwen3-235B-A22B requests: 2 input_tokens: 120 output_tokens: 30 unknown_requests: 1 cache_hits: 0 succeeded_requests: 1 failed_requests: 0 partial_requests: 0 spend: 0.00045 reserved_spend: 0.01 guardrails: blocked_events: 0 flagged_events: 0 recent_events: [] meta: token_group_id: 11111111-1111-4111-8111-111111111111 start_date: '2026-09-01' end_date: '2026-09-02' metadata: {} summary: Get gateway usage summary tags: - AI Gateway /machine-payments/account-credit: post: summary: Create a machine payment account credit description: 'Creates an account credit using the Machine Payment Protocol (MPP), an HTTP-402 payment flow for machines and agents. The flow has two steps. First, send an authenticated request with the `amount_usd` to credit; the response is `402 Payment Required` with one or more payment challenges (for example separate Tempo and Stripe challenges) in the `WWW-Authenticate` header. Second, retry the request with an `Authorization: Payment ...` credential constructed from the challenge; on success the response includes the credited transaction and a `Payment-Receipt` header. The credited account is never chosen by the request body: the initial request credits the account of the authenticated user, and a paid retry credits the account bound to the verified payment credential. The amount must be within the configured bounds (by default between 5.00 and 500.00 USD). Successful paid retries are idempotent — when Rails reaches its duplicate-transaction lookup for an already-recorded payment, it returns the existing transaction with `created: false` instead of crediting the account again. This deduplication applies to successful fulfillment: re-sending the same Stripe credential may instead be rejected by the upstream provider as an idempotent replay and return `402 Payment Required` rather than the existing transaction. > **Warning: the payment credential is bound to a specific Telnyx account ID.** A payment is captured before the bound account is validated. If the credential names an account that is missing, suspended, blocked, cancelled, dormant, or ineligible for the tier, the payment is captured but **no account is credited**. If the credential names a different but eligible account, that account is credited — the service does not compare it against the payer''s account. There is **no automatic refund**: if the captured payment does not credit the intended account, contact Telnyx support for remediation.' operationId: createMachinePaymentAccountCredit tags: - Machine Payments x-endpoint-cost: light security: - bearerAuth: [] - Payment: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MachinePaymentAccountCreditRequest' example: amount_usd: '10.00' responses: '201': description: Account credit created from a verified machine payment headers: Payment-Receipt: $ref: '#/components/headers/PaymentReceipt' content: application/json: schema: $ref: '#/components/schemas/MachinePaymentAccountCreditResponse' example: data: id: de06811a-2e43-4561-af5a-7d0a26e20bbb record_type: machine_payment_account_credit account_id: '123456789' amount: '10.00' currency: USD payment_source: machine_payment provider: stripe payment_method: stripe_spt payment_intent_id: pi_3OrJx2eZvKYlo2C1234abcd receipt_reference: pi_3OrJx2eZvKYlo2C1234abcd mpp_resource: telnyx:account-credit:123456789:usd:10.00 status: settled created: true created_at: '2026-08-12T15:00:00Z' '200': description: Successful duplicate paid retry — the existing account-credit transaction is returned and the account is not credited again. This applies when Rails reaches its duplicate-transaction lookup; re-sending the same Stripe credential may instead be rejected by the upstream provider as an idempotent replay and return `402 Payment Required`. headers: Payment-Receipt: $ref: '#/components/headers/PaymentReceipt' content: application/json: schema: $ref: '#/components/schemas/MachinePaymentAccountCreditResponse' example: data: id: de06811a-2e43-4561-af5a-7d0a26e20bbb record_type: machine_payment_account_credit account_id: '123456789' amount: '10.00' currency: USD payment_source: machine_payment provider: stripe payment_method: stripe_spt payment_intent_id: pi_3OrJx2eZvKYlo2C1234abcd receipt_reference: pi_3OrJx2eZvKYlo2C1234abcd mpp_resource: telnyx:account-credit:123456789:usd:10.00 status: settled created: false created_at: '2026-08-12T15:00:00Z' '402': description: 'Payment required. One or more Machine Payment Protocol challenges (for example separate Tempo and Stripe challenges) are returned in the `WWW-Authenticate` header. Construct a payment credential from a challenge and retry the request with an `Authorization: Payment ...` header.' headers: WWW-Authenticate: $ref: '#/components/headers/WWWAuthenticateChallenge' '401': description: 'Unauthorized — the request carried neither valid Telnyx API credentials nor an `Authorization: Payment ...` credential' content: application/json: schema: $ref: '#/components/schemas/machine-payments_ErrorResponse' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. '403': description: 'Forbidden — machine payments are not enabled for the account, the account tier is ineligible, the account is suspended, or the request origin is not permitted. Note: when the account is suspended the failure is returned via `render_failure` as `{"success": false, "message": "You must verify your identity before you may perform this action.", "reasons": []}` rather than the standard `errors` envelope.' content: application/json: schema: oneOf: - $ref: '#/components/schemas/machine-payments_ErrorResponse' - $ref: '#/components/schemas/MachinePaymentSuspendedAccountFailure' examples: machine-payments-disabled: summary: Machine payments not enabled, tier ineligible, or origin not permitted value: errors: - detail: Machine payments are not currently enabled suspended-account: summary: Suspended account value: success: false message: You must verify your identity before you may perform this action. reasons: [] '409': description: Conflict — the payment maps to an already-recorded account credit with different fulfillment metadata, so the account is not credited again content: application/json: schema: $ref: '#/components/schemas/machine-payments_ErrorResponse' example: errors: - detail: machine payment account credit conflicts with existing transaction '422': description: Unprocessable entity — missing or invalid `amount_usd`, or the request fails account-credit policy checks content: application/json: schema: $ref: '#/components/schemas/machine-payments_ErrorResponse' example: errors: - code: '10027' title: Invalid request detail: amount_usd must be at least 5.00 '400': description: 'Bad request — proxied verbatim from the upstream machine payment service when it rejects the request: a malformed or undeserializable `Authorization: Payment ...` credential, a payment credential whose amount violates the upstream amount policy, or a request that fails upstream schema validation. The body is the upstream singular `error` envelope, not the standard Telnyx `errors` array.' content: application/json: schema: $ref: '#/components/schemas/MachinePaymentUpstreamError' examples: invalid-payment-credential: summary: Malformed or undeserializable Payment credential value: error: Invalid Payment authorization credential amount-policy: summary: Credential amount outside the upstream amount policy value: error: amount_usd must be at least 5.00 '404': description: Not found — proxied verbatim from the upstream machine payment service when the machine payment provider is disabled. The body is the upstream singular `error` envelope, not the standard Telnyx `errors` array. content: application/json: schema: $ref: '#/components/schemas/MachinePaymentUpstreamError' example: error: Not found '502': description: Bad gateway — the upstream machine payment service failed to process the request. Other upstream failure statuses (for example 404 when the machine payment provider is disabled, or 400 for schema validation failures) may be proxied verbatim to the client. content: application/json: schema: $ref: '#/components/schemas/machine-payments_ErrorResponse' example: errors: - detail: Machine payment service failed x-latency-category: responsive /managed_accounts: get: summary: Lists accounts managed by the current user. description: Lists the accounts managed by the current user. Users need to be explictly approved by Telnyx in order to become manager accounts. operationId: ListManagedAccounts tags: - Managed Accounts x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/managed-accounts_FilterConsolidated' - $ref: '#/components/parameters/PageConsolidated' - $ref: '#/components/parameters/managed-accounts_Sort' - $ref: '#/components/parameters/IncludeCancelledAccounts' responses: '200': description: Successful response with a list of managed accounts. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/ManagedAccountMultiListing' meta: $ref: '#/components/schemas/PaginationMeta' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' post: summary: Create a new managed account. description: Create a new managed account owned by the authenticated user. You need to be explictly approved by Telnyx in order to become a manager account. operationId: CreateManagedAccount tags: - Managed Accounts x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that define the managed account to be created required: true content: application/json: schema: $ref: '#/components/schemas/CreateManagedAccountRequest' responses: '200': description: Successful response with information about a single managed account. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ManagedAccount' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableManagedAccountEntity' /managed_accounts/allocatable_global_outbound_channels: get: summary: Display information about allocatable global outbound channels for the current user. description: Display information about allocatable global outbound channels for the current user. Only usable by account managers. operationId: ListAllocatableGlobalOutboundChannels tags: - Managed Accounts x-endpoint-cost: medium responses: '200': description: Successful response with information about allocatable global outbound channels. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ManagedAccountsGlobalOutboundChannels' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' '403': $ref: '#/components/responses/managed-accounts_ForbiddenResponse' /managed_accounts/{id}: get: description: Retrieves the details of a single managed account. summary: Retrieve a managed account operationId: RetrieveManagedAccount tags: - Managed Accounts parameters: - name: id in: path description: Managed Account User ID required: true schema: type: string responses: '200': description: Successful response with information about a single managed account. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ManagedAccount' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' '404': description: Resource not found patch: description: Updates the specified managed account's attributes and returns the updated account. summary: Update a managed account operationId: UpdateManagedAccount tags: - Managed Accounts parameters: - name: id in: path description: Managed Account User ID required: true schema: type: string requestBody: description: Parameters that define the updates to the managed account required: true content: application/json: schema: $ref: '#/components/schemas/UpdateManagedAccountRequest' responses: '200': description: Successful response with information about a single managed account. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ManagedAccount' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' '404': description: Resource not found '422': $ref: '#/components/responses/UnprocessableManagedAccountEntity' /managed_accounts/{id}/actions/disable: post: summary: Disables a managed account description: Disables a managed account, forbidding it to use Telnyx services, including sending or receiving phone calls and SMS messages. Ongoing phone calls will not be affected. The managed account and its sub-users will no longer be able to log in via the mission control portal. operationId: DisableManagedAccount tags: - Managed Accounts parameters: - name: id in: path description: Managed Account User ID required: true schema: type: string responses: '200': description: Successful response with information about a single managed account. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ManagedAccount' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' '404': description: Resource not found '422': $ref: '#/components/responses/UnprocessableManagedAccountEntity' /managed_accounts/{id}/actions/enable: post: summary: Enables a managed account description: Enables a managed account and its sub-users to use Telnyx services. operationId: EnableManagedAccount tags: - Managed Accounts parameters: - name: id in: path description: Managed Account User ID required: true schema: type: string requestBody: description: Additional parameters for what to do when enabling the managed account required: false content: application/json: schema: type: object properties: reenable_all_connections: type: boolean description: 'When true, all connections owned by this managed account will automatically be re-enabled. Note: Any connections that do not pass validations will not be re-enabled.' default: false example: true responses: '200': description: Successful response with information about a single managed account. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ManagedAccount' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' '404': description: Resource not found '422': $ref: '#/components/responses/UnprocessableManagedAccountEntity' /managed_accounts/{id}/update_global_channel_limit: patch: summary: Update the amount of allocatable global outbound channels allocated to a specific managed account. description: Update the amount of allocatable global outbound channels allocated to a specific managed account. operationId: UpdateManagedAccountGlobalChannelLimit tags: - Managed Accounts parameters: - name: id in: path description: Managed Account User ID required: true schema: type: string requestBody: description: Parameters that define the changes to the global outbounds channels for the managed account required: true content: application/json: schema: $ref: '#/components/schemas/UpdateManagedAccountGlobalChannelLimitRequest' responses: '200': description: Successful response with information about the allocatable global outbound channels for the given account. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SingleManagedAccountGlobalOutboundChannels' '401': $ref: '#/components/responses/managed-accounts_UnauthorizedResponse' '404': description: Resource not found '422': $ref: '#/components/responses/UnprocessableManagedAccountEntity' /media: get: summary: List uploaded media description: Returns a list of the media files stored on your account, with support for filtering. operationId: ListMediaStorage tags: - Media Storage API parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[content_type][]' schema: type: object properties: content_type: type: array items: type: string example: application_xml description: Filters files by given content types responses: '200': description: A response with a list of media resources content: application/json: schema: type: object title: List of media resources response properties: data: type: array items: $ref: '#/components/schemas/MediaResource' meta: $ref: '#/components/schemas/PaginationMeta' '401': $ref: '#/components/responses/media-storage_GenericErrorResponse' default: $ref: '#/components/responses/media-storage_GenericErrorResponse' post: summary: Upload media description: Upload media file to Telnyx so it can be used with other Telnyx services operationId: CreateMediaStorage tags: - Media Storage API requestBody: description: Upload media request required: true content: application/json: schema: $ref: '#/components/schemas/UploadMediaRequest' multipart/form-data: schema: $ref: '#/components/schemas/UploadMediaMultipartRequest' responses: '201': description: A response describing a media resource content: application/json: schema: type: object title: Media resource response properties: data: $ref: '#/components/schemas/MediaResource' '401': $ref: '#/components/responses/media-storage_GenericErrorResponse' '422': $ref: '#/components/responses/media-storage_GenericErrorResponse' default: $ref: '#/components/responses/media-storage_GenericErrorResponse' /media/{media_name}: delete: summary: Deletes stored media description: Permanently deletes the specified media file from storage. operationId: DeleteMediaStorage tags: - Media Storage API parameters: - $ref: '#/components/parameters/MediaName' responses: '204': description: The media was deleted successfully. '401': $ref: '#/components/responses/media-storage_GenericErrorResponse' '404': $ref: '#/components/responses/media-storage_GenericErrorResponse' default: $ref: '#/components/responses/media-storage_GenericErrorResponse' get: summary: Retrieve stored media description: Returns the information about a stored media file. operationId: GetMediaStorage tags: - Media Storage API parameters: - $ref: '#/components/parameters/MediaName' responses: '200': description: A response describing a media resource content: application/json: schema: type: object title: Media resource response properties: data: $ref: '#/components/schemas/MediaResource' '401': $ref: '#/components/responses/media-storage_GenericErrorResponse' '404': $ref: '#/components/responses/media-storage_GenericErrorResponse' default: $ref: '#/components/responses/media-storage_GenericErrorResponse' put: summary: Update stored media description: Updates the specified stored media file and returns the updated resource. operationId: UpdateMediaStorage tags: - Media Storage API parameters: - $ref: '#/components/parameters/MediaName' requestBody: description: Update media request required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMediaRequest' multipart/form-data: schema: $ref: '#/components/schemas/UpdateMediaMultipartRequest' responses: '200': description: A response describing a media resource content: application/json: schema: type: object title: Media resource response properties: data: $ref: '#/components/schemas/MediaResource' '401': $ref: '#/components/responses/media-storage_GenericErrorResponse' '404': $ref: '#/components/responses/media-storage_GenericErrorResponse' '422': $ref: '#/components/responses/media-storage_GenericErrorResponse' default: $ref: '#/components/responses/media-storage_GenericErrorResponse' /media/{media_name}/download: get: summary: Download stored media description: Downloads the raw content of the specified stored media file. operationId: DownloadMedia tags: - Media Storage API parameters: - $ref: '#/components/parameters/MediaName' responses: '200': description: A response describing a media resource content: application/octet-stream: schema: type: string format: binary '401': $ref: '#/components/responses/media-storage_GenericErrorResponse' '404': $ref: '#/components/responses/media-storage_GenericErrorResponse' '422': $ref: '#/components/responses/media-storage_GenericErrorResponse' default: $ref: '#/components/responses/media-storage_GenericErrorResponse' /meeting_sessions: get: operationId: listMeetingSessions tags: - Meeting Sessions summary: List meeting sessions description: Returns a list of meeting sessions, optionally filtered by status. parameters: - name: status in: query required: false description: Filter meeting sessions by current status. schema: type: string enum: - scheduled - joining - waiting_for_admission - active - leaving - ended - failed - admission_denied description: 'Lifecycle status of the session. `scheduled`: waiting for `join_at` before the bot attempts to join. `joining`: the bot is connecting to the meeting. `waiting_for_admission`: the bot is in the lobby waiting to be admitted. `active`: the bot is in the meeting and capturing. `leaving`: the bot is exiting the meeting. `ended`: the bot left and the session is complete. `failed`: the bot could not join or the session failed. `admission_denied`: the host did not admit the bot.' responses: '200': description: Successful response with a list of meeting sessions. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionListResponse' example: data: - id: mtgsess_9b2f... account_id: '22' provider: telnyx status: active status_detail: null recording: true meeting_url: https://meet.google.com/abc-defg-hij platform: google_meet bot_name: Notetaker config: voice: null speak_on_enter: null barge_in: false summarize_on_end: true chat_on_enter: null avatar: null avatar_state: null avatar_state_changed_at: null assistant: null assistant_state: null assistant_state_changed_at: null webhook_url: null metadata: {} failure_reason: null created_at: '2026-06-16T08:58:00Z' join_at: null joined_at: '2026-06-16T09:00:00Z' ended_at: null updated_at: '2026-06-16T09:00:00Z' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '503': $ref: '#/components/responses/MeetingReadAuthUnavailable' post: operationId: createMeetingSession tags: - Meeting Sessions summary: Create a meeting session description: 'Creates a new meeting session. When an idempotency_key is supplied in the request body, replay lookup is scoped to the authenticated account and compares only the key; the request payload is not fingerprinted or compared. If a session with that key already exists for the account, the existing session is replayed (200); otherwise a new session is created (201). The session may enter asynchronous states (e.g. joining, waiting_for_admission) before becoming active. Optional `camera_image` input is write-only and applies only when no avatar or Assistant webpage output takes precedence. An ignored URL is not fetched. An effective URL source is resolved before bot creation; neither the source URL nor image bytes are persisted, returned, or logged. Treat signed URLs as credentials. With `assistant.avatar: true`, the assistant is read before the bot is created: an assistant without a Telnyx avatar configured is rejected with 400 `invalid_request` (message prefix `assistant_avatar_not_configured:`), an unknown assistant with 400 `invalid_request` (prefix `assistant_not_found:`), and a failed lookup with 503 `assistant_lookup_unavailable`; no bot is created in any of these cases.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMeetingSessionRequest' responses: '200': description: Replayed existing meeting session matching the account-scoped idempotency_key. Replay is key-only; the request payload is not fingerprinted or compared. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionResponse' '201': description: New meeting session created. content: application/json: schema: $ref: '#/components/schemas/CreateMeetingSessionResponse' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '413': $ref: '#/components/responses/PayloadTooLarge' '422': $ref: '#/components/responses/meeting-sessions_UnprocessableEntity' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '502': $ref: '#/components/responses/MeetingCreateProviderError' '503': $ref: '#/components/responses/ServiceUnavailable' /meeting_sessions/{id}: delete: operationId: deleteMeetingSession tags: - Meeting Sessions summary: Delete a meeting session description: Stops a meeting session without deleting its persisted record. Scheduled bots are cancelled, while bots that are joining or active are asked to leave. The persisted meeting session record remains available. parameters: - $ref: '#/components/parameters/MeetingSessionId' responses: '200': description: Successful response with the deleted meeting session. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionResponse' example: data: id: mtgsess_9b2f... account_id: '22' provider: telnyx status: leaving status_detail: null recording: true meeting_url: https://meet.google.com/abc-defg-hij platform: google_meet bot_name: Notetaker config: voice: null speak_on_enter: null barge_in: false summarize_on_end: true chat_on_enter: null avatar: null avatar_state: null avatar_state_changed_at: null assistant: null assistant_state: null assistant_state_changed_at: null webhook_url: null metadata: {} failure_reason: null created_at: '2026-06-16T08:58:00Z' join_at: null joined_at: '2026-06-16T09:00:00Z' ended_at: null updated_at: '2026-06-16T09:00:00Z' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '409': $ref: '#/components/responses/meeting-sessions_Conflict' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '502': $ref: '#/components/responses/MeetingStopProviderError' '503': $ref: '#/components/responses/ServiceUnavailable' get: operationId: retrieveMeetingSession tags: - Meeting Sessions summary: Retrieve a meeting session description: Retrieves a single meeting session by ID. A session that does not exist or that belongs to a different account both return 404. parameters: - $ref: '#/components/parameters/MeetingSessionId' responses: '200': description: Successful response with the meeting session. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionResponse' example: data: id: mtgsess_9b2f... account_id: '22' provider: telnyx status: active status_detail: null recording: true meeting_url: https://meet.google.com/abc-defg-hij platform: google_meet bot_name: Notetaker config: voice: null speak_on_enter: null barge_in: false summarize_on_end: true chat_on_enter: null avatar: null avatar_state: null avatar_state_changed_at: null assistant: null assistant_state: null assistant_state_changed_at: null webhook_url: null metadata: {} failure_reason: null created_at: '2026-06-16T08:58:00Z' join_at: null joined_at: '2026-06-16T09:00:00Z' ended_at: null updated_at: '2026-06-16T09:00:00Z' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '503': $ref: '#/components/responses/MeetingReadAuthUnavailable' patch: operationId: updateMeetingSession tags: - Meeting Sessions summary: Update a meeting session description: Updates mutable properties of a meeting session. Only sessions in the scheduled state can be updated; any other state returns 409 with the invalid_state error code. All request fields are optional, and an empty object is a valid no-op update. parameters: - $ref: '#/components/parameters/MeetingSessionId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMeetingSessionRequest' example: join_at: '2026-08-05T17:00:00Z' responses: '200': description: Successful response with the updated meeting session. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionResponse' example: data: id: mtgsess_9b2f... account_id: '22' provider: telnyx status: scheduled status_detail: null recording: false meeting_url: https://meet.google.com/abc-defg-hij platform: google_meet bot_name: Notetaker config: voice: null speak_on_enter: null barge_in: false summarize_on_end: true chat_on_enter: null avatar: null avatar_state: null avatar_state_changed_at: null assistant: null assistant_state: null assistant_state_changed_at: null webhook_url: null metadata: {} failure_reason: null created_at: '2026-06-16T08:58:00Z' join_at: '2026-08-05T17:00:00Z' joined_at: null ended_at: null updated_at: '2026-06-16T09:00:00Z' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '409': $ref: '#/components/responses/meeting-sessions_Conflict' '413': $ref: '#/components/responses/PayloadTooLarge' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '502': $ref: '#/components/responses/MeetingUpdateProviderError' '503': $ref: '#/components/responses/ServiceUnavailable' /meeting_sessions/{id}/actions/send_chat: post: operationId: sendChatMeetingSession tags: - Meeting Session Actions summary: Send chat in a meeting session description: Sends a chat message into a meeting session. parameters: - $ref: '#/components/parameters/MeetingSessionId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SendChatMeetingSessionRequest' example: text: I will send the summary after this call. responses: '202': description: The chat message was accepted and is being delivered. content: application/json: schema: $ref: '#/components/schemas/ActionAcceptedResponse' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '409': $ref: '#/components/responses/meeting-sessions_Conflict' '413': $ref: '#/components/responses/PayloadTooLarge' '422': $ref: '#/components/responses/meeting-sessions_UnprocessableEntity' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '502': $ref: '#/components/responses/MeetingSendChatProviderError' '503': $ref: '#/components/responses/ServiceUnavailable' /meeting_sessions/{id}/actions/speak: post: operationId: speakMeetingSession tags: - Meeting Session Actions summary: Speak in a meeting session description: 'Sends audio / text-to-speech into a meeting session. With a Telnyx AI Assistant attached, the bot is a webpage-output bot: the speak audio routes through the assistant''s output page rather than the bot mic and plays once the assistant is connected -- it is not refused. If that page cannot be reached, delivery fails with the 502 below, which may arrive without an error envelope, so branch on the status code before parsing a body. The assistant is designed to own the conversation, so prefer letting it speak or use `send_chat`. With a digital avatar (`assistant.avatar: true`), speak is refused with 409 `invalid_state` (message prefix `avatar_requires_assistant_speech:`): the avatar renders only the assistant''s own speech.' parameters: - $ref: '#/components/parameters/MeetingSessionId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SpeakMeetingSessionRequest' example: text: Here are the three decisions from this call. interrupt: false responses: '202': description: The speak action was accepted and is being processed. content: application/json: schema: $ref: '#/components/schemas/ActionAcceptedResponse' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '409': $ref: '#/components/responses/meeting-sessions_Conflict' '413': $ref: '#/components/responses/PayloadTooLarge' '422': $ref: '#/components/responses/meeting-sessions_UnprocessableEntity' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '502': $ref: '#/components/responses/MeetingSpeakUpstreamError' '503': $ref: '#/components/responses/ServiceUnavailable' /meeting_sessions/{id}/actions/stop_speaking: post: operationId: stopSpeakingMeetingSession tags: - Meeting Session Actions summary: Stop speaking in a meeting session description: 'Stops any active text-to-speech playback in a meeting session. Sessions with a digital avatar (`assistant.avatar: true`) return 409 `invalid_state` (message prefix `avatar_requires_assistant_speech:`): the avatar renders only the assistant''s own speech.' parameters: - $ref: '#/components/parameters/MeetingSessionId' responses: '202': description: The stop-speaking action was accepted. content: application/json: schema: $ref: '#/components/schemas/ActionAcceptedResponse' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '409': $ref: '#/components/responses/meeting-sessions_Conflict' '422': $ref: '#/components/responses/meeting-sessions_UnprocessableEntity' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '502': $ref: '#/components/responses/MeetingStopSpeakingProviderError' '503': $ref: '#/components/responses/ServiceUnavailable' /meeting_sessions/{id}/artifacts: get: operationId: listMeetingSessionArtifacts tags: - Meeting Session Artifacts summary: List meeting session artifacts description: Returns a list of artifacts for a meeting session. parameters: - $ref: '#/components/parameters/MeetingSessionId' responses: '200': description: Successful response with a list of meeting session artifacts. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionArtifactListResponse' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '503': $ref: '#/components/responses/MeetingReadAuthUnavailable' post: operationId: createMeetingSessionArtifact tags: - Meeting Session Artifacts summary: Create a meeting session artifact description: 'Requests asynchronous generation of one artifact: `summary`, `action_items`, `decisions`, `topics`, `open_questions`, or `custom`. Each request produces one artifact. `custom` is answered from a `prompt` you supply, which is required for `custom` and rejected on the five named types. Generation requires transcript content and configured inference and currently reads at most the first 10,000 segments, so exceptionally long transcripts may produce incomplete artifacts or fail model limits. **Not idempotent, and every call is billed**: each request is a separate inference run, so a retry or a duplicate POST produces a second artifact and a second charge. Guard the call rather than relying on the service to collapse it. The automatic `summarize_on_end` attempt is billed on the same basis.' parameters: - $ref: '#/components/parameters/MeetingSessionId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMeetingSessionArtifactRequest' example: type: summary responses: '202': description: Artifact creation accepted and is being processed asynchronously. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionArtifactResponse' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '409': $ref: '#/components/responses/meeting-sessions_Conflict' '413': $ref: '#/components/responses/PayloadTooLarge' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '503': $ref: '#/components/responses/MeetingArtifactUnavailable' /meeting_sessions/{id}/artifacts/{artifact_id}: get: operationId: retrieveMeetingSessionArtifact tags: - Meeting Session Artifacts summary: Retrieve a meeting session artifact description: Retrieves a single meeting session artifact by ID. parameters: - $ref: '#/components/parameters/MeetingSessionId' - $ref: '#/components/parameters/ArtifactId' responses: '200': description: Successful response with the meeting session artifact. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionArtifactResponse' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '503': $ref: '#/components/responses/MeetingReadAuthUnavailable' /meeting_sessions/{id}/events: get: operationId: listMeetingSessionEvents tags: - Meeting Session Data summary: List meeting session events description: Returns stored events ordered by ascending `seq`. To continue, pass the last returned item's `seq` as `after`. An empty page means no later stored events existed at read time; this operation returns no separate next-page cursor. Default `limit` is 100 and maximum is 1,000. parameters: - $ref: '#/components/parameters/MeetingSessionId' - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Limit' responses: '200': description: Successful response with a list of meeting session events. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionEventListResponse' example: data: - seq: 12 type: session.status_changed payload: status: active previous_status: waiting_for_admission occurred_at: '2026-06-16T09:00:05Z' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '503': $ref: '#/components/responses/MeetingReadAuthUnavailable' /meeting_sessions/{id}/recording_media: delete: operationId: deleteMeetingSessionRecordingMedia tags: - Meeting Session Data summary: Delete meeting session recording media description: Irreversibly requests deletion of the aggregate recording media for the session. The operation retains the Telnyx-local Meeting session, transcript segments, events, artifacts, and usage records. It is separate from `DELETE /meeting_sessions/{id}`, which stops or cancels participation without deleting the persisted session. A missing/foreign session returns 404; a deletion request whose outcome is unknown returns 502. security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/MeetingSessionId' responses: '202': description: The irreversible recording-media deletion request was accepted, or a deletion is already in progress. content: application/json: schema: $ref: '#/components/schemas/MeetingSessionRecordingMediaDeletionResponse' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/RecordingMediaResourceNotFound' '409': $ref: '#/components/responses/RecordingMediaInvalidState' '422': $ref: '#/components/responses/RecordingMediaUnsupportedCapability' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '502': $ref: '#/components/responses/RecordingMediaProviderError' '503': $ref: '#/components/responses/RecordingMediaAuthenticationUnavailable' /meeting_sessions/{id}/transcript: get: operationId: listMeetingSessionTranscript tags: - Meeting Session Data summary: List meeting session transcript description: 'Returns transcript segments ordered by ascending `seq`. Default `limit` is 100 and maximum is 1,000. Continue with `after=meta.next_after`. A long-poll timeout returns 200 with empty `data` and `meta.next_after: null`; retain the cursor supplied to that request because null is not a replacement cursor.' parameters: - $ref: '#/components/parameters/MeetingSessionId' - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/WaitSeconds' responses: '200': description: Successful response with transcript segments (may be empty on wait timeout). content: application/json: schema: $ref: '#/components/schemas/TranscriptSegmentListResponse' '400': $ref: '#/components/responses/meeting-sessions_BadRequest' '401': $ref: '#/components/responses/meeting-sessions_Unauthorized' '403': $ref: '#/components/responses/Forbidden' '429': $ref: '#/components/responses/TooManyRequests' '404': $ref: '#/components/responses/meeting-sessions_NotFound' '500': $ref: '#/components/responses/meeting-sessions_InternalServerError' '503': $ref: '#/components/responses/MeetingReadAuthUnavailable' /messages: post: summary: Send a message description: 'Send a message with a Phone Number, Alphanumeric Sender ID, Short Code or Number Pool. This endpoint allows you to send a message with any messaging resource. Current messaging resources include: long-code, short-code, number-pool, and alphanumeric-sender-id. ' operationId: SendMessage tags: - Messages requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/CreateMessageRequest' responses: '200': description: Successful response with details about a message. content: application/json: schema: type: object title: Message Response properties: data: $ref: '#/components/schemas/MessagingOutboundMessagePayload' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/alphanumeric/sender/id: post: summary: Send a message using an alphanumeric sender ID description: Send an SMS message using an alphanumeric sender ID. This is SMS only. operationId: SendAlphanumericSenderIdMessage tags: - Messages requestBody: required: true content: application/json: schema: type: object required: - from - to - text - messaging_profile_id properties: from: type: string description: A valid alphanumeric sender ID on the user's account. example: MyCompany to: description: Receiving address (+E.164 formatted phone number). $ref: '#/components/schemas/ToNumber' text: type: string description: The message body. messaging_profile_id: type: string format: uuid description: The messaging profile ID to use. webhook_url: type: - string - 'null' format: url description: Callback URL for delivery status updates. webhook_failover_url: type: - string - 'null' format: url description: Failover callback URL for delivery status updates. use_profile_webhooks: type: boolean description: If true, use the messaging profile's webhook settings. responses: '200': description: Successful response with the sent message. content: application/json: schema: $ref: '#/components/schemas/OutboundMessageResponse' '400': $ref: '#/components/responses/messaging_BadRequestResponse' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse' '422': $ref: '#/components/responses/messaging_UnprocessableEntityResponse' x-latency-category: responsive /messages/alphanumeric_sender_id: post: summary: Send a message using an alphanumeric sender ID description: Send an SMS message using an alphanumeric sender ID. This is SMS only. operationId: SendAlphanumericSenderIdMessage tags: - Messages requestBody: required: true content: application/json: schema: type: object required: - from - to - text - messaging_profile_id properties: from: type: string description: A valid alphanumeric sender ID on the user's account. example: MyCompany to: description: Receiving address (+E.164 formatted phone number). $ref: '#/components/schemas/ToNumber' text: type: string description: The message body. messaging_profile_id: type: string format: uuid description: The messaging profile ID to use. webhook_url: type: - string - 'null' format: url description: Callback URL for delivery status updates. webhook_failover_url: type: - string - 'null' format: url description: Failover callback URL for delivery status updates. use_profile_webhooks: type: boolean description: If true, use the messaging profile's webhook settings. responses: '200': description: Successful response with the sent message. content: application/json: schema: $ref: '#/components/schemas/messaging_OutboundMessageResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' '400': $ref: '#/components/responses/messaging_BadRequestResponse_0b38e7044b' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '422': $ref: '#/components/responses/messaging_UnprocessableEntityResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/group/{message_id}: get: summary: Retrieve group MMS messages description: Retrieve all messages in a group MMS conversation by the group message ID. operationId: GetGroupMmsMessages tags: - Messages parameters: - name: message_id in: path required: true schema: type: string format: uuid description: The group message ID. responses: '200': description: Successful response with group MMS messages. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/MessagingOutboundMessagePayload' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' /messages/group_mms: post: summary: Send a group MMS message operationId: CreateGroupMmsMessage tags: - Messages requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/CreateGroupMMSMessageRequest' responses: '200': description: Successful response with details about a message. content: application/json: schema: type: object title: Message Response properties: data: $ref: '#/components/schemas/MessagingOutboundMessagePayload' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' description: Queues an MMS addressed to multiple recipients as a group conversation. Delivery events are reported asynchronously through messaging webhooks. parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/long_code: post: summary: Send a long code message operationId: CreateLongCodeMessage tags: - Messages requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/CreateLongCodeMessageRequest' responses: '200': description: Successful response with details about a message. content: application/json: schema: type: object title: Message Response properties: data: $ref: '#/components/schemas/MessagingOutboundMessagePayload' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' description: Queues an outbound SMS or MMS using a long-code sender. Delivery progress and final disposition are reported asynchronously through messaging webhooks. parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/number_pool: post: summary: Send a message using number pool operationId: CreateNumberPoolMessage tags: - Messages requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/CreateNumberPoolMessageRequest' responses: '200': description: Successful response with details about a message. content: application/json: schema: type: object title: Message Response properties: data: $ref: '#/components/schemas/MessagingOutboundMessagePayload' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' description: Queues an outbound message using a number pool. Telnyx selects an eligible sender from the pool according to its messaging profile configuration. parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/rcs: post: tags: - RCS summary: Send an RCS message operationId: SendRCSMessage requestBody: description: RCS message body content: application/json: schema: $ref: '#/components/schemas/RCSMessage' required: true responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/RCSResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' description: Queues an outbound RCS message through the selected RCS agent. Check recipient capabilities before sending features that require RCS support. parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/rcs/deeplinks/{agent_id}: get: summary: Generate RCS deeplink description: Generate a deeplink URL that can be used to start an RCS conversation with a specific agent. operationId: GenerateRCSDeeplink tags: - RCS parameters: - name: agent_id in: path description: RCS agent ID required: true schema: type: string - name: phone_number in: query description: Phone number in E164 format (URL encoded) required: false schema: type: string example: '%2B18445550001' - name: body in: query description: Pre-filled message body (URL encoded) required: false schema: type: string example: hello%20world responses: '200': description: Successful response with deeplink URL content: application/json: schema: $ref: '#/components/schemas/RCSDeeplinkResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /messages/rcs_deeplinks/{agent_id}: get: summary: Generate RCS deeplink description: Generate a deeplink URL that can be used to start an RCS conversation with a specific agent. operationId: GenerateRCSDeeplink tags: - RCS parameters: - name: agent_id in: path description: RCS agent ID required: true schema: type: string - name: phone_number in: query description: Phone number in E164 format (URL encoded) required: false schema: type: string example: '%2B18445550001' - name: body in: query description: Pre-filled message body (URL encoded) required: false schema: type: string example: hello%20world responses: '200': description: Successful response with deeplink URL content: application/json: schema: $ref: '#/components/schemas/RCSDeeplinkResponse' 4XX: $ref: '#/components/responses/rcs_messaging_GenericErrorResponse' x-latency-category: responsive /messages/schedule: post: summary: Schedule a message description: 'Schedule a message with a Phone Number, Alphanumeric Sender ID, Short Code or Number Pool. This endpoint allows you to schedule a message with any messaging resource. Current messaging resources include: long-code, short-code, number-pool, and alphanumeric-sender-id. ' operationId: ScheduleMessage tags: - Messages requestBody: description: Message payload with send_at set content: application/json: schema: $ref: '#/components/schemas/CreateScheduledMessageRequest' responses: '200': description: Successful response with details about a message. content: application/json: schema: type: object title: Message Response properties: data: $ref: '#/components/schemas/MessagingOutboundMessagePayload' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /messages/short_code: post: summary: Send a short code message operationId: CreateShortCodeMessage tags: - Messages requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/CreateShortCodeMessageRequest' responses: '200': description: Successful response with details about a message. content: application/json: schema: type: object title: Message Response properties: data: $ref: '#/components/schemas/MessagingOutboundMessagePayload' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' description: Queues an outbound SMS or MMS using a short-code sender. Delivery progress and final disposition are reported asynchronously through messaging webhooks. parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/whatsapp: post: tags: - Whatsapp messaging summary: Send a Whatsapp message description: Sends a WhatsApp message using a Telnyx WhatsApp-enabled number. The message body, interactive elements, media, location, and reaction content are specified in the `whatsapp_message` field. Delivery progress and final disposition are reported asynchronously through messaging webhooks. operationId: SendWhatsappMessage requestBody: description: Whatsapp message body content: application/json: schema: $ref: '#/components/schemas/messaging_WhatsappMessage' required: true responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/WhatsappResponse' headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' '409': $ref: '#/components/responses/messaging_IdempotencyConflictResponse' '413': $ref: '#/components/responses/IdempotencyPayloadTooLargeResponse' '503': $ref: '#/components/responses/IdempotencyProtectionUnavailableResponse' parameters: - $ref: '#/components/parameters/IdempotencyKey' /messages/{id}: delete: summary: Cancel a scheduled message description: Cancel a scheduled message that has not yet been sent. Only messages with `status=scheduled` and `send_at` more than a minute from now can be cancelled. operationId: CancelMessage tags: - Messages parameters: - name: id in: path description: The id of the message to cancel required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/messaging_OutboundMessagePayloadCancelled' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/messaging_Error_0b38e7044b' '404': description: Not found. content: application/json: schema: $ref: '#/components/schemas/messaging_Error_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' get: summary: Retrieve a message description: 'Note: This API endpoint can only retrieve messages that are no older than 10 days since their creation. If you require messages older than this, please generate an [MDR report.](https://developers.telnyx.com/api-reference/mdr-usage-reports/create-mdr-usage-report)' operationId: GetMessage tags: - Messages parameters: - name: id in: path description: The id of the message required: true schema: type: string format: uuid responses: '200': description: Successful response with details of a message. content: application/json: schema: type: object properties: data: oneOf: - $ref: '#/components/schemas/MessagingOutboundMessagePayload' - $ref: '#/components/schemas/MessagingInboundMessagePayload' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /messaging/hosted/numbers: get: summary: List messaging hosted numbers description: List all hosted numbers associated with the authenticated user. operationId: ListMessagingHostedNumbers tags: - Messaging parameters: - name: filter[messaging_profile_id] in: query required: false schema: type: string format: uuid description: Filter by messaging profile ID. - name: filter[phone_number] in: query required: false schema: type: string description: Filter by exact phone number. - name: filter[phone_number][contains] in: query required: false schema: type: string description: Filter by phone number substring. - name: sort[phone_number] in: query required: false schema: type: string enum: - asc - desc description: Sort by phone number. - name: page[number] in: query description: Page number to retrieve (1-based). required: false schema: type: integer default: 1 - name: page[size] in: query description: Number of items to return per page. required: false schema: type: integer default: 20 responses: '200': description: Successful response with a list of hosted numbers. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' meta: $ref: '#/components/schemas/messaging_PaginationMeta' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse' x-latency-category: responsive /messaging/profiles/{id}/actions/regenerate/secret: post: summary: Regenerate messaging profile secret description: Regenerate the v1 secret for a messaging profile. operationId: RegenerateMessagingProfileSecret tags: - Messaging parameters: - name: id in: path required: true schema: type: string format: uuid description: The identifier of the messaging profile. responses: '200': description: Successful response with details about a messaging profile. content: application/json: schema: type: object title: Messaging Profile Response properties: data: $ref: '#/components/schemas/MessagingProfile' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse' '404': $ref: '#/components/responses/profiles_messaging_NotFoundResponse' x-latency-category: responsive /messaging/profiles/{id}/alphanumeric/sender/ids: get: summary: List alphanumeric sender IDs for a messaging profile description: List all alphanumeric sender IDs associated with a specific messaging profile. operationId: ListProfileAlphanumericSenderIds tags: - Messaging parameters: - name: id in: path required: true schema: type: string format: uuid description: The identifier of the messaging profile. - name: page[number] in: query description: Page number to retrieve (1-based). required: false schema: type: integer default: 1 - name: page[size] in: query description: Number of items to return per page. required: false schema: type: integer default: 20 responses: '200': description: Successful response with a list of alphanumeric sender IDs. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/AlphanumericSenderId' meta: $ref: '#/components/schemas/messaging_PaginationMeta' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse' '404': $ref: '#/components/responses/profiles_messaging_NotFoundResponse' x-latency-category: responsive /messaging/profiles/{id}/metrics: get: summary: Get detailed messaging profile metrics description: Get detailed metrics for a specific messaging profile, broken down by time interval. operationId: GetDetailedProfileMetrics tags: - Messaging parameters: - name: id in: path required: true schema: type: string format: uuid description: The identifier of the messaging profile. - name: time_frame in: query required: false schema: $ref: '#/components/schemas/MessagingMetricsTimeFrame' description: The time frame for metrics. responses: '200': description: Successful response with detailed profile metrics. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ProfileMetrics' example: {} '400': $ref: '#/components/responses/messaging_BadRequestResponse' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse' '404': $ref: '#/components/responses/profiles_messaging_NotFoundResponse' x-latency-category: responsive /messaging/rcs/agents: get: summary: List all RCS agents operationId: ListRCSAgents tags: - RCS parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful reponse with the list of RCS agents content: application/json: schema: $ref: '#/components/schemas/messaging_RCSAgentsResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns RCS agents available to the authenticated account. /messaging/rcs/agents/{id}: get: summary: Retrieve an RCS agent operationId: GetRCSAgentById tags: - RCS parameters: - name: id in: path description: RCS agent ID required: true schema: type: string responses: '200': description: Successful response with the RCS agent content: application/json: schema: $ref: '#/components/schemas/RCSAgentResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the configuration and current state of the specified RCS agent. patch: summary: Modify an RCS agent operationId: UpdateRCSAgentById tags: - RCS parameters: - name: id in: path description: RCS agent ID required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/RCSAgentUpdate' responses: '200': description: Successful response with the updated RCS agent content: application/json: schema: $ref: '#/components/schemas/RCSAgentResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the supplied configuration fields on the specified RCS agent. /messaging/rcs/bulk_capabilities: post: summary: Check RCS capabilities (batch) operationId: ListRCSCapabilitiesOfAPhoneNumbersBatch tags: - RCS requestBody: content: application/json: schema: $ref: '#/components/schemas/RCSCapabilityListRequest' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/RCSCapabilitiesBulk' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns RCS capability information for multiple recipients in one request. /messaging/rcs/capabilities/{agent_id}/{phone_number}: get: summary: Check RCS capabilities operationId: ListRCSCapabilitiesOfAPhoneNumber tags: - RCS parameters: - name: agent_id in: path description: RCS agent ID required: true schema: type: string - name: phone_number in: path description: Phone number in E164 format required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/RCSCapabilitiesSingle' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the RCS features supported by the specified recipient for the selected agent. /messaging/rcs/test_number_invite/{id}/{phone_number}: put: summary: Add RCS test number description: Adds a test phone number to an RCS agent for testing purposes. operationId: InviteATestNumberToRCS tags: - RCS parameters: - name: id in: path description: RCS agent ID required: true schema: type: string - name: phone_number in: path description: Phone number in E164 format to invite for testing required: true schema: type: string responses: '200': description: Test number successfully invited to RCS agent content: application/json: schema: $ref: '#/components/schemas/RCSTestNumberInviteResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /messaging/tollfree/verification/requests/{id}/status/history: get: tags: - Verification Requests summary: Get Verification Request Status History description: 'Get the history of status changes for a verification request. Returns a paginated list of historical status changes including the reason for each change and when it occurred.' operationId: GetVerificationStatusHistory parameters: - required: true schema: title: Id type: string format: uuid name: id in: path description: Unique identifier of the resource. - required: true schema: title: Page Number minimum: 1 type: integer name: page[number] in: query description: Page number to retrieve (1-based). - required: true schema: title: Page Size minimum: 1 type: integer description: Request this many records per page. This value is automatically clamped if the provided value is too large. name: page[size] in: query description: Number of items to return per page. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Paginated_VerificationStatusHistoryEntry_' 4XX: $ref: '#/components/responses/toll-free-verification_GenericErrorResponse' x-latency-category: responsive /messaging_hosted_number_orders: get: summary: List messaging hosted number orders operationId: ListMessagingHostedNumberOrders tags: - Hosted Numbers x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response with a list of messaging hosted number orders. content: application/json: schema: type: object title: List Messaging Hosted Number Order Response properties: data: type: array items: $ref: '#/components/schemas/MessagingHostedNumberOrder' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns hosted-messaging orders for the authenticated account. Apply the documented filters and pagination parameters to narrow the result set. post: summary: Create a messaging hosted number order operationId: CreateMessagingHostedNumberOrder tags: - Hosted Numbers requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/CreateMessagingHostedNumberOrderRequest' responses: '200': description: Successful response with details about a messaging hosted number order. content: application/json: schema: type: object title: Retrieve Messaging Hosted Number Order Response properties: data: $ref: '#/components/schemas/MessagingHostedNumberOrder' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Creates an order to enable Telnyx messaging on phone numbers whose voice service remains with another carrier. /messaging_hosted_number_orders/eligibility_numbers_check: post: summary: Check hosted messaging eligibility operationId: CheckEligibilityNumbers tags: - Hosted Numbers requestBody: description: Phone numbers to check eligibility required: true content: application/json: schema: $ref: '#/components/schemas/EligibilityNumbersRequest' example: phone_numbers: - string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/EligibilityNumbersResponse' example: phone_numbers: - detail: string phone_number: string eligible: false eligible_status: NUMBER_CAN_NOT_BE_REPEATED '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/messaging_Error_0b38e7044b' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/messaging_Error_0b38e7044b' description: Checks whether the supplied phone numbers are eligible for hosted messaging before an order is created. /messaging_hosted_number_orders/{id}: delete: summary: Delete a messaging hosted number order description: Delete a messaging hosted number order and all associated phone numbers. operationId: DeleteMessagingHostedNumberOrder tags: - Hosted Numbers parameters: - name: id in: path description: Identifies the messaging hosted number order to delete. required: true schema: type: string responses: '200': description: Successful response with details about a messaging hosted number order. content: application/json: schema: type: object title: Retrieve Messaging Hosted Number Order Response properties: data: $ref: '#/components/schemas/MessagingHostedNumberOrder' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' get: summary: Retrieve a messaging hosted number order operationId: GetMessagingHostedNumberOrder tags: - Hosted Numbers parameters: - name: id in: path description: Identifies the type of resource. required: true schema: type: string responses: '200': description: Successful response with details about a messaging hosted number order. content: application/json: schema: type: object title: Retrieve Messaging Hosted Number Order Response properties: data: $ref: '#/components/schemas/MessagingHostedNumberOrder' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the current state, phone numbers, and required actions for the specified hosted-messaging order. /messaging_hosted_number_orders/{id}/actions/file_upload: post: summary: Upload hosted number document operationId: UploadMessagingHostedNumberOrderFile tags: - Hosted Numbers parameters: - name: id in: path description: Identifies the type of resource. required: true schema: type: string requestBody: description: Message payload content: multipart/form-data: schema: $ref: '#/components/schemas/UploadFileMessagingHostedNumberOrderRequest' encoding: loa: contentType: application/pdf bill: contentType: application/pdf responses: '200': description: Successful response with details about a messaging hosted number order. content: application/json: schema: type: object title: Retrieve Messaging Hosted Number Order Response properties: data: $ref: '#/components/schemas/MessagingHostedNumberOrder' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Uploads a supporting document to the specified hosted-messaging order. /messaging_hosted_number_orders/{id}/validation_codes: post: summary: Validate hosted number codes description: Validate the verification codes sent to the numbers of the hosted order. The verification codes must be created in the verification codes endpoint. operationId: ValidateVerificationCodesForMessagingHostedNumberOrder tags: - Hosted Numbers parameters: - name: id in: path description: Order ID related to the validation codes. required: true schema: type: string requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/ValidationCodesRequest' example: verification_codes: - phone_number: string code: string responses: '200': description: Successful response with the phone numbers and their respective status of the validation codes. content: application/json: schema: type: object title: Retrieve Messaging Hosted Number Response properties: data: $ref: '#/components/schemas/ValidationCodes' example: data: phone_numbers: - phone_number: string status: verified order_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /messaging_hosted_number_orders/{id}/verification_codes: post: summary: Create hosted number verification codes description: Create verification codes to validate numbers of the hosted order. The verification codes will be sent to the numbers of the hosted order. operationId: CreateVerificationCodesForMessagingHostedNumberOrder tags: - Hosted Numbers parameters: - name: id in: path description: Order ID to have a verification code created. required: true schema: type: string requestBody: description: Message payload content: application/json: schema: $ref: '#/components/schemas/VerificationCodesRequest' example: phone_numbers: - string verification_method: sms responses: '200': description: Verification codes created and sent to the phone numbers of the hosted order. content: application/json: schema: $ref: '#/components/schemas/CreatedVerificationCodesResponse' example: data: - phone_number: string verification_code_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 type: sms error: string 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /messaging_hosted_numbers: get: summary: List messaging hosted numbers description: List all hosted numbers associated with the authenticated user. operationId: ListMessagingHostedNumbers tags: - Messaging parameters: - name: filter[messaging_profile_id] in: query required: false schema: type: string format: uuid description: Filter by messaging profile ID. - name: filter[phone_number] in: query required: false schema: type: string description: Filter by exact phone number. - name: filter[phone_number][contains] in: query required: false schema: type: string description: Filter by phone number substring. - name: sort[phone_number] in: query required: false schema: type: string enum: - asc - desc description: Sort by phone number. - name: page[number] in: query description: Page number to retrieve (1-based). required: false schema: type: integer default: 1 - name: page[size] in: query description: Number of items to return per page. required: false schema: type: integer default: 20 responses: '200': description: Successful response with a list of hosted numbers. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' /messaging_hosted_numbers/{id}: delete: summary: Delete a messaging hosted number operationId: DeleteMessagingHostedNumber tags: - Hosted Numbers parameters: - name: id in: path description: Identifies the type of resource. required: true schema: type: string responses: '200': description: Successful response with details about a messaging hosted number order. content: application/json: schema: type: object title: Retrieve Messaging Hosted Number Order Response properties: data: $ref: '#/components/schemas/MessagingHostedNumberOrder' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Removes the specified hosted number from Telnyx messaging management. get: summary: Retrieve a messaging hosted number description: Retrieve a specific messaging hosted number by its ID or phone number. operationId: GetMessagingHostedNumber tags: - Messaging parameters: - name: id in: path required: true schema: type: string description: The ID or phone number of the hosted number. responses: '200': description: Successful response with a hosted number. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' patch: summary: Update a messaging hosted number description: Update the messaging settings for a hosted number. operationId: UpdateMessagingHostedNumber tags: - Messaging parameters: - name: id in: path required: true schema: type: string description: The ID or phone number of the hosted number. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePhoneNumberMessagingSettingsRequest' responses: '200': description: Successful response with the updated hosted number. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' /messaging_numbers/bulk_updates: post: summary: Bulk update phone number profiles operationId: BulkUpdateMessagingSettingsOnPhoneNumbers tags: - Number Settings requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbersRequest' responses: '200': description: Successful response with details about messaging bulk update phone numbers. content: application/json: schema: type: object title: Retrieve bulk update messaging settings Response properties: data: $ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers' 4XX: $ref: '#/components/responses/phone-numbers_messaging_GenericErrorResponse' x-latency-category: responsive description: Update the messaging settings of multiple phone numbers in a single request. /messaging_numbers/bulk_updates/{order_id}: get: summary: Retrieve bulk update status operationId: GetBulkUpdateMessagingSettingsOnPhoneNumbersStatus tags: - Number Settings parameters: - name: order_id description: Order ID to verify bulk update status. in: path required: true schema: type: string responses: '200': description: Successful response with details about messaging bulk update phone numbers. content: application/json: schema: type: object title: Retrieve bulk update messaging settings Response properties: data: $ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers' 4XX: $ref: '#/components/responses/phone-numbers_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the status of a previously submitted bulk update of messaging settings. /messaging_numbers_bulk_updates: post: summary: Bulk update phone number profiles operationId: BulkUpdateMessagingSettingsOnPhoneNumbers tags: - Number Settings requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbersRequest' responses: '200': description: Successful response with details about messaging bulk update phone numbers. content: application/json: schema: type: object title: Retrieve bulk update messaging settings Response properties: data: $ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Starts a bulk update of messaging-profile assignments for the supplied phone numbers. The response identifies the order used to monitor processing. /messaging_numbers_bulk_updates/{order_id}: get: summary: Retrieve bulk update status operationId: GetBulkUpdateMessagingSettingsOnPhoneNumbersStatus tags: - Number Settings parameters: - name: order_id description: Order ID to verify bulk update status. in: path required: true schema: type: string responses: '200': description: Successful response with details about messaging bulk update phone numbers. content: application/json: schema: type: object title: Retrieve bulk update messaging settings Response properties: data: $ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns processing status and results for a bulk messaging-settings update order. /messaging_optouts: get: summary: List opt-outs description: Returns a paginated list of opt-out blocks created when message recipients opt out. Supports filtering and optional redaction of recipient numbers. operationId: ListOptOuts tags: - Opt-Out Management parameters: - name: redaction_enabled in: query description: If receiving address (+E.164 formatted phone number) should be redacted required: false example: +447766**** schema: type: string x-format: boolean - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[messaging_profile_id], filter[from]' schema: type: object properties: messaging_profile_id: type: string description: The ID of the messaging profile to retrieve opt-outs for from: type: string description: The sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code) to retrieve opt-outs for - $ref: '#/components/parameters/PageConsolidated' - name: created_at in: query style: deepObject explode: true description: 'Consolidated created_at parameter (deepObject style). Originally: created_at[gte], created_at[lte]' schema: type: object properties: gte: type: string format: date-time description: Filter opt-outs created after this date (ISO-8601 format) lte: type: string format: date-time description: Filter opt-outs created before this date (ISO-8601 format) responses: '200': description: Successful response with opt-out list data content: application/json: schema: $ref: '#/components/schemas/OptOutListResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/messaging_Error_0b38e7044b' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/messaging_Error_0b38e7044b' /messaging_profile_metrics: get: summary: List high-level messaging profile metrics description: List high-level metrics for all messaging profiles belonging to the authenticated user. operationId: GetProfileMetrics tags: - Messaging parameters: - name: time_frame in: query required: false schema: $ref: '#/components/schemas/MessagingMetricsTimeFrame' description: The time frame for metrics. responses: '200': description: Successful response with high-level profile metrics. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/ProfileMetricsHighLevel' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' '400': $ref: '#/components/responses/messaging_BadRequestResponse_0b38e7044b' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' /messaging_profiles: get: summary: List messaging profiles operationId: ListMessagingProfiles tags: - Profiles x-group-parameters: 'true' x-endpoint-cost: medium parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[name]' schema: type: object properties: name: type: string description: Filter by name - $ref: '#/components/parameters/PageConsolidated' - name: filter[name][eq] in: query required: false schema: type: string description: Filter profiles by exact name match. - name: filter[name][contains] in: query required: false schema: type: string description: Filter profiles by name containing the given string. responses: '200': description: Successful response with a list of messaging profiles. content: application/json: schema: type: object title: List Messaging Profiles Response properties: data: type: array items: $ref: '#/components/schemas/messaging_MessagingProfile' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Lists messaging profiles owned by the authenticated account. Apply the documented filters and pagination parameters to narrow the result set. post: summary: Create a messaging profile operationId: CreateMessagingProfile tags: - Profiles x-endpoint-cost: medium requestBody: description: New Messaging Profile object required: true content: application/json: schema: $ref: '#/components/schemas/messaging_CreateMessagingProfileRequest' responses: '200': description: Successful response with details about a messaging profile. content: application/json: schema: type: object title: Messaging Profile Response properties: data: $ref: '#/components/schemas/messaging_MessagingProfile' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Creates a messaging profile that controls outbound sender selection, webhook delivery, and inbound message handling for associated numbers and short codes. /messaging_profiles/{id}: delete: summary: Delete a messaging profile operationId: DeleteMessagingProfile tags: - Profiles parameters: - $ref: '#/components/parameters/MessagingProfileId' responses: '200': description: Successful response with details about a messaging profile. content: application/json: schema: type: object title: Messaging Profile Response properties: data: $ref: '#/components/schemas/messaging_MessagingProfile' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Deletes the specified messaging profile and returns the profile's final configuration. get: summary: Retrieve a messaging profile operationId: RetrieveMessagingProfile tags: - Profiles parameters: - $ref: '#/components/parameters/MessagingProfileId' responses: '200': description: Successful response with details about a messaging profile. content: application/json: schema: type: object title: Messaging Profile Response properties: data: $ref: '#/components/schemas/messaging_MessagingProfile' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the complete configuration of the specified messaging profile, including webhook and sender-selection settings. patch: summary: Update a messaging profile operationId: UpdateMessagingProfile tags: - Profiles parameters: - $ref: '#/components/parameters/MessagingProfileId' requestBody: description: New Messaging Profile object required: true content: application/json: schema: $ref: '#/components/schemas/messaging_UpdateMessagingProfileRequest' responses: '200': description: Successful response with details about a messaging profile. content: application/json: schema: type: object title: Messaging Profile Response properties: data: $ref: '#/components/schemas/messaging_MessagingProfile' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the supplied settings on the specified messaging profile. Settings omitted from the request remain unchanged. /messaging_profiles/{id}/actions/regenerate_secret: post: summary: Regenerate messaging profile secret description: Regenerate the v1 secret for a messaging profile. operationId: RegenerateMessagingProfileSecret tags: - Messaging parameters: - name: id in: path required: true schema: type: string format: uuid description: The identifier of the messaging profile. responses: '200': description: Successful response with details about a messaging profile. content: application/json: schema: type: object title: Messaging Profile Response properties: data: $ref: '#/components/schemas/messaging_MessagingProfile' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' /messaging_profiles/{id}/alphanumeric_sender_ids: get: summary: List alphanumeric sender IDs for a messaging profile description: List all alphanumeric sender IDs associated with a specific messaging profile. operationId: ListProfileAlphanumericSenderIds tags: - Messaging parameters: - name: id in: path required: true schema: type: string format: uuid description: The identifier of the messaging profile. - name: page[number] in: query description: Page number to retrieve (1-based). required: false schema: type: integer default: 1 - name: page[size] in: query description: Number of items to return per page. required: false schema: type: integer default: 20 responses: '200': description: Successful response with a list of alphanumeric sender IDs. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/AlphanumericSenderId' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' /messaging_profiles/{id}/metrics: get: summary: Get detailed messaging profile metrics description: Get detailed metrics for a specific messaging profile, broken down by time interval. operationId: GetDetailedProfileMetrics tags: - Messaging parameters: - name: id in: path required: true schema: type: string format: uuid description: The identifier of the messaging profile. - name: time_frame in: query required: false schema: $ref: '#/components/schemas/MessagingMetricsTimeFrame' description: The time frame for metrics. responses: '200': description: Successful response with detailed profile metrics. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ProfileMetrics' example: {} '400': $ref: '#/components/responses/messaging_BadRequestResponse_0b38e7044b' '401': $ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b' '404': $ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b' /messaging_profiles/{id}/phone_numbers: get: summary: List phone numbers associated with a messaging profile operationId: ListProfilePhoneNumbers tags: - Profiles x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/MessagingProfileId' - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response with a list of messaging profile phone numbers. content: application/json: schema: type: object title: List Messaging Profile Phone Numbers Response properties: data: type: array items: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the phone numbers currently associated with the specified messaging profile. /messaging_profiles/{id}/short_codes: get: summary: List short codes associated with a messaging profile operationId: ListProfileShortCodes tags: - Profiles x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/MessagingProfileId' - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response with a list of messaging profile short codes. content: application/json: schema: type: object title: List Messaging Profile Short Codes Response properties: data: type: array items: $ref: '#/components/schemas/ShortCode' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the short codes currently associated with the specified messaging profile. /messaging_profiles/{profile_id}/autoresp_configs: get: tags: - Opt-Out Management summary: List Auto-Response Settings operationId: GetAutorespConfigs parameters: - required: true schema: title: Profile Id type: string format: uuid name: profile_id in: path description: Unique identifier of the profile. - required: false schema: title: Country Code type: string name: country_code in: query description: Filter results by country code. - name: created_at in: query style: deepObject explode: true description: 'Consolidated created_at parameter (deepObject style). Originally: created_at[gte], created_at[lte]' schema: type: object properties: gte: title: Created At[Gte] type: string lte: title: Created At[Lte] type: string - name: updated_at in: query style: deepObject explode: true description: 'Consolidated updated_at parameter (deepObject style). Originally: updated_at[gte], updated_at[lte]' schema: type: object properties: gte: title: Updated At[Gte] type: string lte: title: Updated At[Lte] type: string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/messaging_AutorespConfigsResponseSchema' example: data: - op: start keywords: - START - BEGIN resp_text: Thank you for subscribing US customer. country_code: US id: 677ec1cb-949e-4aeb-a1c3-6d9ddffc1409 created_at: '2023-03-21T23:37:45.858535+00:00' updated_at: '2023-03-21T23:37:45.858535+00:00' - op: stop keywords: - END - STOP resp_text: You have unsubscribed. country_code: US id: 54b7e19f-98a8-416f-81d1-a2782eade48b created_at: '2023-03-10T21:54:46.293380+00:00' updated_at: '2023-03-10T21:54:46.293380+00:00' - op: start keywords: - START resp_text: Thank you for subscribing. country_code: '*' id: cfe07be1-2369-433f-be00-eb176008e834 created_at: '2023-03-14T14:46:21.097735+00:00' updated_at: '2023-03-14T14:46:21.097735+00:00' meta: page_number: 1 page_size: 5 total_pages: 1 total_results: 3 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the auto-response rules configured for the specified messaging profile. post: tags: - Opt-Out Management summary: Create auto-response setting operationId: CreateAutorespConfig parameters: - required: true schema: title: Profile Id type: string name: profile_id in: path description: Unique identifier of the profile. requestBody: content: application/json: schema: $ref: '#/components/schemas/AutoRespConfigCreateSchema' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AutorespConfigResponseSchema' example: data: op: start keywords: - START resp_text: Hello there! country_code: US id: c2298f86-a4dc-4cac-b6b6-4a3d01c290fa created_at: '2023-03-22T00:06:49.068817+00:00' updated_at: '2023-03-22T00:06:49.068817+00:00' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Creates an auto-response rule on the specified messaging profile. Matching inbound messages trigger the configured response. /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}: delete: tags: - Opt-Out Management summary: Delete Auto-Response Setting operationId: DeleteAutorespConfig parameters: - required: true schema: title: Profile Id type: string format: uuid name: profile_id in: path description: Unique identifier of the profile. - required: true schema: title: Autoresp Cfg Id type: string format: uuid name: autoresp_cfg_id in: path description: Unique identifier of the autoresp cfg. responses: '200': description: Successful Response content: application/json: schema: type: string example: OK 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Deletes the specified auto-response rule from the messaging profile. get: tags: - Opt-Out Management summary: Get Auto-Response Setting operationId: GetAutorespConfig parameters: - required: true schema: title: Profile Id type: string format: uuid name: profile_id in: path description: Unique identifier of the profile. - required: true schema: title: Autoresp Cfg Id type: string format: uuid name: autoresp_cfg_id in: path description: Unique identifier of the autoresp cfg. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AutorespConfigResponseSchema' example: data: op: start keywords: - UNSTOP resp_text: Hello there! country_code: US id: adc37adf-d110-4355-9e9a-262847e68e89 created_at: '2023-03-13T17:51:03.826453+00:00' updated_at: '2023-03-13T17:51:03.826453+00:00' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the matching criteria and response content for the specified auto-response rule. put: tags: - Opt-Out Management summary: Update Auto-Response Setting operationId: UpdateAutoRespConfig parameters: - required: true schema: title: Profile Id type: string format: uuid name: profile_id in: path description: Unique identifier of the profile. - required: true schema: title: Autoresp Cfg Id type: string format: uuid name: autoresp_cfg_id in: path description: Unique identifier of the autoresp cfg. requestBody: content: application/json: schema: $ref: '#/components/schemas/AutoRespConfigCreateSchema' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AutorespConfigResponseSchema' example: data: op: start keywords: - START - BEGIN resp_text: Hello there! country_code: '*' id: 54b7e19f-98a8-416f-81d1-a2782eade48b created_at: '2023-03-10T21:54:46.293380+00:00' updated_at: '2023-03-10T21:54:46.293380+00:00' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Replaces the configuration of the specified auto-response rule. /messaging_tollfree/verification/requests: get: tags: - Verification Requests summary: List Verification Requests description: Get a list of previously-submitted tollfree verification requests operationId: ListVerificationRequests parameters: - required: true schema: title: Page minimum: 1 type: integer name: page in: query description: Page number to retrieve (1-based). - description: "\n Request this many records per page\n\n This value is automatically clamped if the provided\ \ value is too large.\n " required: true schema: title: Page Size minimum: 1 type: integer description: "\n Request this many records per page\n\n This value is automatically clamped if the\ \ provided value is too large.\n " name: page_size in: query - required: false schema: title: Date Start type: string format: date-time name: date_start in: query description: Start of the date range filter (inclusive, ISO 8601). - required: false schema: title: Date End type: string format: date-time name: date_end in: query description: End of the date range filter (inclusive, ISO 8601). - required: false schema: $ref: '#/components/schemas/TFVerificationStatus' name: status in: query description: Filter results by status. - required: false schema: title: Phone Number type: string name: phone_number in: query description: Filter results by phone number. - required: false schema: title: Business Name type: string name: business_name in: query description: Filter verification requests by business name responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Paginated_VerificationRequestStatus_' 4XX: $ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse' post: tags: - Verification Requests summary: Submit Verification Request description: Submit a new tollfree verification request operationId: SubmitVerificationRequest parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/messaging_toll_free_verification_TFVerificationRequest' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/messaging_toll_free_verification_VerificationRequestEgress' 4XX: $ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse' /messaging_tollfree/verification/requests/{id}: delete: tags: - Verification Requests summary: Delete Verification Request description: 'Delete a verification request A request may only be deleted when when the request is in the "rejected" state. * `HTTP 200`: request successfully deleted * `HTTP 400`: request exists but can''t be deleted (i.e. not rejected) * `HTTP 404`: request unknown or already deleted' operationId: DeleteVerificationRequest parameters: - required: true schema: title: Id type: string format: uuid name: id in: path description: Unique identifier of the resource. responses: '200': description: Successful deleted '404': description: Not Found $ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse' 4XX: $ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse' get: summary: Get Verification Request description: Get a single verification request by its ID. operationId: GetVerificationRequest tags: - Verification Requests parameters: - required: true schema: title: Id type: string format: uuid name: id in: path description: Unique identifier of the resource. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/messaging_toll_free_verification_VerificationRequestStatus' 4XX: $ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse' patch: tags: - Verification Requests summary: Update Verification Request description: Update an existing tollfree verification request. This is particularly useful when there are pending customer actions to be taken. operationId: UpdateVerificationRequest parameters: - required: true schema: title: Id type: string format: uuid name: id in: path description: Unique identifier of the resource. requestBody: content: application/json: schema: $ref: '#/components/schemas/messaging_toll_free_verification_TFVerificationRequest' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/messaging_toll_free_verification_VerificationRequestEgress' 4XX: $ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse' /messaging_tollfree/verification/requests/{id}/status_history: get: tags: - Verification Requests summary: Get Verification Request Status History description: 'Get the history of status changes for a verification request. Returns a paginated list of historical status changes including the reason for each change and when it occurred.' operationId: GetVerificationStatusHistory parameters: - required: true schema: title: Id type: string format: uuid name: id in: path description: Unique identifier of the resource. - required: true schema: title: Page Number minimum: 1 type: integer name: page[number] in: query description: Page number to retrieve (1-based). - required: true schema: title: Page Size minimum: 1 type: integer description: Request this many records per page. This value is automatically clamped if the provided value is too large. name: page[size] in: query description: Number of items to return per page. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Paginated_VerificationStatusHistoryEntry_' 4XX: $ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse' /messaging_url_domains: get: summary: List messaging URL domains operationId: ListMessagingUrlDomains tags: - Messaging URL Domains x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response with details about a messaging URL domain. content: application/json: schema: type: object title: List Messaging Profile Url Domains Response properties: data: type: array items: $ref: '#/components/schemas/MessagingUrlDomain' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the URL domains available to the authenticated account for message URL shortening. /mobile_network_operators: get: summary: List mobile network operators description: Telnyx has a set of GSM mobile operators partners that are available through our mobile network roaming. This resource is entirely managed by Telnyx and may change over time. That means that this resource won't allow any write operations for it. Still, it's available so it can be used as a support resource that can be related to other resources or become a configuration option. operationId: GetMobileNetworkOperators tags: - Mobile Network Operators parameters: - $ref: '#/components/parameters/FilterMobileNetworkOperatorsConsolidated' - $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/MobileNetworkOperator' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /mobile_phone_numbers/messaging: get: summary: List mobile phone numbers with messaging settings operationId: ListMobilePhoneNumbersWithMessagingSettings tags: - Mobile Number Settings x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response with a list of mobile phone numbers with messaging settings. content: application/json: schema: type: object title: List Messaging Settings Response properties: data: type: array items: $ref: '#/components/schemas/MobilePhoneNumberWithMessagingSettings' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns mobile phone numbers with their current messaging configuration. /mobile_phone_numbers/{id}/messaging: get: summary: Retrieve a mobile phone number with messaging settings operationId: GetMobilePhoneNumberMessagingSettings tags: - Mobile Number Settings parameters: - name: id in: path description: Identifies the type of resource. required: true schema: type: string responses: '200': description: Successful response with details about a mobile phone number. content: application/json: schema: type: object title: Retrieve Mobile Messaging Settings Response properties: data: $ref: '#/components/schemas/MobilePhoneNumberWithMessagingSettings' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the messaging configuration for the specified mobile phone number. /mobile_push_credentials: get: tags: - Push Credentials summary: List mobile push credentials description: Returns a paginated list of the mobile push credentials on your account, with support for filtering. operationId: ListPushCredentials parameters: - $ref: '#/components/parameters/push-notifications_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[alias]' schema: type: object properties: type: type: string enum: - ios - android example: ios description: type of mobile push credentials alias: type: string example: LucyCredential description: Unique mobile push credential alias responses: '200': description: Mobile mobile push credentials content: application/json: schema: $ref: '#/components/schemas/ListPushCredentialsResponse' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/Errors' post: tags: - Push Credentials summary: Creates a new mobile push credential description: Creates a new mobile push credential for delivering push notifications to iOS or Android apps, and returns the created credential. operationId: CreatePushCredential parameters: [] requestBody: description: Mobile push credential parameters that need to be sent in the request content: application/json: schema: oneOf: - $ref: '#/components/schemas/CreateIosPushCredentialRequest' - $ref: '#/components/schemas/CreateAndroidPushCredentialRequest' required: true responses: '200': description: Mobile push credential created content: application/json: schema: $ref: '#/components/schemas/PushCredentialResponse' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unable to process request content: application/json: schema: $ref: '#/components/schemas/Errors' /mobile_push_credentials/{push_credential_id}: delete: tags: - Push Credentials summary: Deletes a mobile push credential description: Deletes a mobile push credential based on the given `push_credential_id` operationId: DeletePushCredentialById parameters: - name: push_credential_id in: path description: The unique identifier of a mobile push credential required: true schema: type: string format: uuid example: 0ccc7b76-4df3-4bca-a05a-3da1ecc389f0 responses: '204': description: The mobile push credential was deleted successfully '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unable to process request content: application/json: schema: $ref: '#/components/schemas/Errors' get: tags: - Push Credentials summary: Retrieves a mobile push credential description: Retrieves mobile push credential based on the given `push_credential_id` operationId: GetPushCredentialById parameters: - name: push_credential_id in: path description: The unique identifier of a mobile push credential required: true schema: type: string format: uuid example: 0ccc7b76-4df3-4bca-a05a-3da1ecc389f0 responses: '200': description: Successful get mobile push credential response content: application/json: schema: $ref: '#/components/schemas/PushCredentialResponse' '401': description: Unauthorized request content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unable to process request content: application/json: schema: $ref: '#/components/schemas/Errors' /network_coverage: get: summary: List network coverage locations description: List all locations and the interfaces that region supports operationId: ListNetworkCoverage tags: - Coverage parameters: - name: filters in: query style: deepObject explode: true description: 'Consolidated filters parameter (deepObject style). Originally: filters[available_services][contains]' schema: type: object properties: available_services: oneOf: - $ref: '#/components/schemas/AvailableService' description: Filter by exact available service match - type: object properties: contains: $ref: '#/components/schemas/AvailableService' description: Filter by available services containing the specified service additionalProperties: false description: Available service filtering operations additionalProperties: false - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[location.region], filter[location.site], filter[location.pop], filter[location.code]' schema: type: object properties: location.region: type: string example: AMER description: The region of associated location to filter on. location.site: type: string example: SJC description: The site of associated location to filter on. location.pop: type: string example: SV1 description: The POP of associated location to filter on. location.code: type: string example: silicon_valley-ca description: The code of associated location to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/NetworkCoverage' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /networks: get: summary: List all Networks description: Returns a paginated list of the private networks on your account, with support for filtering. operationId: ListNetworks tags: - Networks parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[name]' schema: type: object properties: name: type: string example: test network description: The network name to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Network' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a Network description: Creates a new private network, the container that links your WireGuard interfaces, gateways, and cross connects. operationId: CreateNetwork tags: - Networks requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkCreate' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Network' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /networks/{id}: delete: summary: Delete a Network description: Permanently deletes the specified network from your account. operationId: DeleteNetwork tags: - Networks parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Network' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve a Network description: Returns the details of a single network by its identifier. operationId: GetNetwork tags: - Networks parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Network' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update a Network description: Updates the specified network's attributes and returns the updated network. operationId: UpdateNetwork tags: - Networks parameters: - $ref: '#/components/parameters/ResourceId' requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkCreate' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Network' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /networks/{id}/default_gateway: delete: summary: Delete Default Gateway. description: Removes the default gateway from the specified network. operationId: DeleteDefaultGateway tags: - Networks parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DefaultGateway' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Get Default Gateway status. description: Returns the status of the default gateway configured on the specified network. operationId: GetDefaultGateway tags: - Networks parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DefaultGateway' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create Default Gateway. description: Creates a default gateway on the specified network, directing the network's outbound traffic through the chosen gateway. operationId: CreateDefaultGateway tags: - Networks requestBody: content: application/json: schema: $ref: '#/components/schemas/DefaultGateway' required: true parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DefaultGateway' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /networks/{id}/network_interfaces: get: summary: List all Interfaces for a Network. description: Returns a paginated list of the interfaces attached to the specified network, with support for filtering. operationId: ListNetworkInterfaces tags: - Networks parameters: - $ref: '#/components/parameters/ResourceId' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[name], filter[type], filter[status]' schema: type: object properties: name: type: string example: test interface description: The interface name to filter on. type: type: string example: wireguard_interface description: The interface type to filter on. status: $ref: '#/components/schemas/InterfaceStatus' description: The interface status to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/NetworkInterface' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /noise_suppression_engines: get: summary: List available noise suppression engines description: Returns all noise suppression engines available to the authenticated user. Engines gated behind a feature flag are included only when the flag is enabled for the user's account. Results are not paginated; the number of engines is expected to remain small. operationId: listNoiseSuppressionEngines tags: - Noise Suppression Engines x-endpoint-cost: light x-latency-category: responsive responses: '200': description: A list of noise suppression engines available to the authenticated user content: application/json: schema: $ref: '#/components/schemas/NoiseSuppressionEnginesListResponse' example: data: - value: denoiser label: Denoiser default_attenuation_level: 0 - value: deep_filter_net label: DeepFilterNet default_attenuation_level: 80 '401': description: Unauthorized — the request did not carry valid Telnyx API credentials content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. /notification_channels: get: description: Returns a paginated list of your notification channels, the destinations that receive notifications. summary: List notification channels operationId: ListNotificationChannels tags: - Notifications parameters: - $ref: '#/components/parameters/PageConsolidated' - $ref: '#/components/parameters/notifications_FilterConsolidated' responses: '200': description: Returns a list of notification channels. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/NotificationChannel' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' post: description: Creates a new notification channel defining where notifications are delivered, and returns the created channel. summary: Create a notification channel operationId: CreateNotificationChannels tags: - Notifications requestBody: description: Add a Notification Channel content: application/json: schema: $ref: '#/components/schemas/NotificationChannel' responses: '200': description: A Notification Channel response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationChannel' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /notification_channels/{id}: delete: description: Deletes the specified notification channel so notifications are no longer delivered to it. summary: Delete a notification channel operationId: DeleteNotificationChannel tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' responses: '200': description: A Notification Channel response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationChannel' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' get: description: Returns the details of a single notification channel by its identifier. summary: Get a notification channel operationId: GetNotificationChannel tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' responses: '200': description: A Notification Channel response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationChannel' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '404': $ref: '#/components/responses/notifications_NotFoundResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' patch: description: Updates the specified notification channel and returns the updated channel. summary: Update a notification channel operationId: UpdateNotificationChannel tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' requestBody: description: Update notification channel object required: true content: application/json: schema: $ref: '#/components/schemas/NotificationChannel' responses: '200': description: A Notification Channel response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationChannel' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /notification_event_conditions: get: description: Returns a list of your notifications events conditions. summary: List all Notifications Events Conditions operationId: FindNotificationsEventsConditions tags: - Notifications parameters: - $ref: '#/components/parameters/PageConsolidated' - $ref: '#/components/parameters/notifications_FilterConsolidated' responses: '200': description: Returns a list of notification event conditions available. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/NotificationEventCondition' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /notification_events: get: description: Returns a list of your notifications events. summary: List all Notifications Events operationId: FindNotificationsEvents tags: - Notifications parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Returns a list of notification events available. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/NotificationEvent' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /notification_profiles: get: description: Returns a list of your notifications profiles. summary: List all Notifications Profiles operationId: FindNotificationsProfiles tags: - Notifications parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Returns a list of notification profiles. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/NotificationProfile' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' post: description: Creates a new notification profile, a named grouping used to organize notification settings, and returns it. summary: Create a notification profile operationId: CreateNotificationProfile tags: - Notifications requestBody: description: Add a Notification Profile content: application/json: schema: $ref: '#/components/schemas/NotificationProfile' responses: '200': description: A Notification Profile response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationProfile' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /notification_profiles/{id}: delete: description: Deletes the specified notification profile from your account. summary: Delete a notification profile operationId: DeleteNotificationProfile tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' responses: '200': description: A Notification Profile response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationProfile' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' get: description: Returns the details of a single notification profile by its identifier. operationId: GetNotificationProfile summary: Get a notification profile tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' responses: '200': description: A Notification Profile response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationProfile' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '404': $ref: '#/components/responses/notifications_NotFoundResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' patch: description: Updates the specified notification profile and returns the updated profile. operationId: UpdateNotificationProfile summary: Update a notification profile tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' requestBody: description: Update notification profile object required: true content: application/json: schema: $ref: '#/components/schemas/NotificationProfile' responses: '200': description: A Notification Profile response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationProfile' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /notification_settings: get: description: Returns a paginated list of your notification settings, which map notification event types to profiles and channels. summary: List notification settings operationId: ListNotificationSettings tags: - Notifications parameters: - $ref: '#/components/parameters/PageConsolidated' - $ref: '#/components/parameters/notifications_FilterConsolidated' responses: '200': description: Returns a list of notification settings. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/NotificationSetting' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' post: description: Adds a notification setting that enables delivery of a notification event type to a notification profile. summary: Add a Notification Setting operationId: CreateNotificationSetting tags: - Notifications requestBody: content: application/json: schema: $ref: '#/components/schemas/NotificationSetting' responses: '200': description: A Notification Setting response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationSetting' '201': description: A Notification Setting response - async content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationSetting' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /notification_settings/{id}: delete: description: Deletes the specified notification setting, disabling that notification delivery. summary: Delete a notification setting operationId: DeleteNotificationSetting tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' responses: '200': description: A Notification Setting response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationSetting' '201': description: A Notification Setting response - async content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationSetting' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' get: description: Returns the details of a single notification setting by its identifier. summary: Get a notification setting operationId: GetNotificationSetting tags: - Notifications parameters: - $ref: '#/components/parameters/notifications_Id' responses: '200': description: A Notification Setting response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NotificationSetting' '400': $ref: '#/components/responses/notifications_BadRequestResponse' '404': $ref: '#/components/responses/notifications_NotFoundResponse' '422': $ref: '#/components/responses/notifications_UnprocessableEntity' '500': $ref: '#/components/responses/notifications_GenericErrorResponse' /number_block_orders: get: summary: List number block orders description: Get a paginated list of number block orders. operationId: ListNumberBlockOrders tags: - Phone Number Block Orders parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.starting_number]' schema: type: object properties: status: type: string example: pending description: Filter number block orders by status. created_at: type: object description: Filter number block orders by date range. properties: gt: type: string example: '2018-01-01T00:00:00.000000Z' description: Filter number block orders later than this value. lt: type: string example: '2018-01-01T00:00:00.000000Z' description: Filter number block orders earlier than this value. additionalProperties: false phone_numbers.starting_number: type: string example: '+19705555000' description: Filter number block orders having these phone numbers. responses: '200': description: Successful response with a list of number block orders. content: application/json: schema: type: object title: List Number Block Orders Response properties: data: type: array items: $ref: '#/components/schemas/NumberBlockOrder' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a number block order description: Creates an order for a block of consecutive phone numbers and returns the created order. Track fulfillment through the order's status. operationId: CreateNumberBlockOrder tags: - Phone Number Block Orders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateNumberBlockOrderRequest' responses: '200': description: Successful response with details about a number block order. content: application/json: schema: type: object title: Number Block Order Response properties: data: $ref: '#/components/schemas/NumberBlockOrder' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_block_orders/{number_block_order_id}: get: summary: Retrieve a number block order description: Get an existing phone number block order. operationId: RetrieveNumberBlockOrder tags: - Phone Number Block Orders parameters: - name: number_block_order_id in: path description: The number block order ID. required: true schema: type: string responses: '200': description: Successful response with details about a number block order. content: application/json: schema: type: object title: Number Block Order Response properties: data: $ref: '#/components/schemas/NumberBlockOrder' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_lookup/{phone_number}: get: summary: Lookup phone number data description: Returns information about the provided phone number. operationId: LookupNumber tags: - Number Lookup parameters: - $ref: '#/components/parameters/PhoneNumber' - $ref: '#/components/parameters/NumberLookupType' responses: '200': description: Successful response content: application/json: schema: type: object title: Number Lookup Response properties: data: $ref: '#/components/schemas/NumberLookupRecord' '422': $ref: '#/components/responses/number-lookup_UnprocessableEntity' default: $ref: '#/components/responses/number-lookup_GenericErrorResponse' /number_order_phone_numbers: get: summary: Retrieve a list of phone numbers associated to orders description: Get a list of phone numbers associated to orders. operationId: RetrieveOrderPhoneNumbers tags: - Phone Number Orders parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[country_code]' schema: type: object properties: country_code: type: string example: US description: Country code of the order phone number. responses: '200': description: Successful response with a list of number order phone numbers. content: application/json: schema: type: object title: List Number Order Phone Numbers Response properties: data: type: array items: $ref: '#/components/schemas/NumberOrderPhoneNumber' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_order_phone_numbers/{id}/requirement_group: post: summary: Update requirement group for a phone number order operationId: updateNumberOrderPhoneNumberRequirementGroup tags: - Requirement Groups parameters: - name: id in: path required: true description: The unique identifier of the number order phone number schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object required: - requirement_group_id properties: requirement_group_id: type: string format: uuid description: The ID of the requirement group to associate example: requirement_group_id: a4b201f9-8646-4e54-a7d2-b2e403eeaf8c responses: '200': description: Successful response with updated phone number order details content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/NumberOrderPhoneNumberRequirementGroupResponse' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Associates an existing requirement group with a phone number in a number order. The response contains the updated number-order phone-number details. /number_order_phone_numbers/{number_order_phone_number_id}: get: summary: Retrieve a single phone number within a number order. description: Get an existing phone number in number order. operationId: GetNumberOrderPhoneNumber tags: - Phone Number Orders parameters: - name: number_order_phone_number_id in: path description: The number order phone number ID. required: true schema: type: string responses: '200': description: Successful response with details about a number order phone number. content: application/json: schema: type: object title: Number Order Phone Number Response properties: data: $ref: '#/components/schemas/NumberOrderPhoneNumber' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update requirements for a single phone number within a number order. description: Updates requirements for a single phone number within a number order. operationId: UpdateNumberOrderPhoneNumber tags: - Phone Number Orders parameters: - name: number_order_phone_number_id in: path description: The number order phone number ID. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateNumberOrderPhoneNumberRequest' responses: '200': description: Successful response with details about a number order phone number. content: application/json: schema: type: object title: Number Order Phone Number Response properties: data: $ref: '#/components/schemas/NumberOrderPhoneNumber' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_orders: get: summary: List number orders description: Returns a paginated list of your phone number orders, with support for filtering. operationId: ListNumberOrders tags: - Phone Number Orders x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers_count], filter[customer_reference], filter[requirements_met]' schema: type: object properties: status: type: string description: Filter number orders by status. created_at: type: object description: Filter number orders by date range. properties: gt: type: string description: Filter number orders later than this value. lt: type: string description: Filter number orders earlier than this value. additionalProperties: false phone_numbers_count: type: string description: Filter number order with this amount of numbers customer_reference: type: string description: Filter number orders via the customer reference set. requirements_met: type: boolean description: Filter number orders by requirements met. responses: '200': description: Successful response with a list of number orders. content: application/json: schema: type: object title: List Number Orders Response properties: data: type: array items: $ref: '#/components/schemas/NumberOrder' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a number order description: Creates an order to purchase the specified phone numbers and returns the created order. Track fulfillment through the order's status. operationId: CreateNumberOrder tags: - Phone Number Orders x-endpoint-cost: heavy requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateNumberOrderRequest' responses: '200': description: Successful response with details about a number order. content: application/json: schema: type: object title: Number Order Response properties: data: $ref: '#/components/schemas/NumberOrderWithPhoneNumbers' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_orders/{number_order_id}: get: summary: Retrieve a number order description: Returns the details of an existing phone number order, including its status and the numbers included. operationId: RetrieveNumberOrder tags: - Phone Number Orders parameters: - name: number_order_id in: path description: The number order ID. required: true schema: type: string responses: '200': description: Successful response with details about a number order. content: application/json: schema: type: object title: Number Order Response properties: data: $ref: '#/components/schemas/NumberOrderWithPhoneNumbers' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update a number order description: Updates an existing phone number order, for example to satisfy regulatory requirements attached to the order, and returns the updated order. operationId: UpdateNumberOrder tags: - Phone Number Orders parameters: - name: number_order_id in: path description: The number order ID. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateNumberOrderRequest' responses: '200': description: Successful response with details about a number order. content: application/json: schema: type: object title: Number Order Response properties: data: $ref: '#/components/schemas/NumberOrderWithPhoneNumbers' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_reservations: get: summary: List number reservations description: Gets a paginated list of phone number reservations. operationId: ListNumberReservations tags: - Phone Number Reservations x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.phone_number], filter[customer_reference]' schema: type: object properties: status: type: string description: Filter number reservations by status. created_at: type: object description: Filter number reservations by date range. properties: gt: type: string description: Filter number reservations later than this value. lt: type: string description: Filter number reservations earlier than this value. additionalProperties: false phone_numbers.phone_number: type: string description: Filter number reservations having these phone numbers. customer_reference: type: string description: Filter number reservations via the customer reference set. responses: '200': description: Successful response with a list of number reservations. content: application/json: schema: type: object title: List Number Reservations Response properties: data: type: array items: $ref: '#/components/schemas/NumberReservation' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a number reservation description: Creates a Phone Number Reservation for multiple numbers. operationId: CreateNumberReservation tags: - Phone Number Reservations requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateNumberReservationRequest' responses: '200': description: Successful response with details about a number reservation. content: application/json: schema: type: object title: Number Reservation Response properties: data: $ref: '#/components/schemas/NumberReservation' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_reservations/{number_reservation_id}: get: summary: Retrieve a number reservation description: Returns the details of a single phone number reservation, including its status and the reserved numbers. operationId: RetrieveNumberReservation tags: - Phone Number Reservations parameters: - name: number_reservation_id in: path description: The number reservation ID. required: true schema: type: string responses: '200': description: Successful response with details about a number reservation. content: application/json: schema: type: object title: Number Reservation Response properties: data: $ref: '#/components/schemas/NumberReservation' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /number_reservations/{number_reservation_id}/actions/extend: post: summary: Extend a number reservation description: Extends reservation expiry time on all phone numbers. operationId: ExtendNumberReservationExpiryTime tags: - Phone Number Reservations parameters: - name: number_reservation_id in: path description: The number reservation ID. required: true schema: type: string responses: '200': description: Successful response with details about a number reservation. content: application/json: schema: type: object title: Number Reservation Response properties: data: $ref: '#/components/schemas/NumberReservation' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /numbers_features: post: summary: Retrieve the features for a list of numbers description: Retrieve the features for a list of numbers operationId: PostNumbersFeatures tags: - numbers features requestBody: required: true content: application/json: schema: type: object properties: phone_numbers: type: array items: type: string required: - phone_numbers example: phone_numbers: - '+19705555098' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: type: object properties: phone_number: type: string features: type: array items: type: string required: - phone_number - features example: data: - phone_number: string features: - string '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /oauth/authorize: get: operationId: AuthorizeOAuth tags: - OAuth Protocol summary: OAuth authorization endpoint description: OAuth 2.0 authorization endpoint for the authorization code flow security: [] parameters: - name: response_type in: query required: true schema: type: string enum: - code description: OAuth response type - name: client_id in: query required: true schema: type: string description: OAuth client identifier - name: redirect_uri in: query required: true schema: type: string format: uri description: Redirect URI - name: scope in: query schema: type: string description: Space-separated list of requested scopes example: admin - name: state in: query schema: type: string description: State parameter for CSRF protection - name: code_challenge in: query schema: type: string description: PKCE code challenge - name: code_challenge_method in: query schema: type: string enum: - plain - S256 description: PKCE code challenge method responses: '200': description: Consent page displayed (when consent UI is embedded) content: text/html: schema: type: string example: Authorize application

Authorize My App

My App is requesting access to your Telnyx account.

'302': description: Redirect to consent page or client with authorization code/error '400': description: Invalid request content: text/html: schema: type: string example: Authorization consent page '404': description: Client not found content: text/html: schema: type: string '422': description: Invalid redirect URI content: text/html: schema: type: string /oauth/clients: get: operationId: ListOAuthClients tags: - OAuth Clients summary: List OAuth clients description: Retrieve a paginated list of OAuth clients for the authenticated user parameters: - name: page[size] in: query schema: type: integer minimum: 1 maximum: 100 default: 20 description: Number of results per page - name: page[number] in: query schema: type: integer minimum: 1 default: 1 description: Page number - name: filter[client_type] in: query schema: type: string enum: - confidential - public description: Filter by client type - name: filter[verified] in: query schema: type: boolean description: Filter by verification status - name: filter[allowed_grant_types][contains] in: query schema: type: string enum: - client_credentials - authorization_code - refresh_token description: Filter by allowed grant type - name: filter[name] in: query schema: type: string description: Filter by exact client name - name: filter[name][contains] in: query schema: type: string description: Filter by client name containing text - name: filter[client_id] in: query schema: type: string description: Filter by client ID responses: '200': description: List of OAuth clients content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/OAuthClient' meta: $ref: '#/components/schemas/oauth_PaginationMeta' example: data: - record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_results: 0 total_pages: 0 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/oauth_Error' x-latency-category: responsive post: operationId: CreateOAuthClient tags: - OAuth Clients summary: Create OAuth client description: Creates a new OAuth client on your account for authenticating third-party integrations, and returns the created client. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthClientCreateRequest' responses: '201': description: OAuth client created successfully content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthClient' example: data: record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/oauth_Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/oauth_Error' '422': description: Validation error content: application/json: schema: $ref: '#/components/schemas/oauth_Error' x-latency-category: responsive /oauth/clients/{id}: delete: operationId: DeleteOAuthClient tags: - OAuth Clients summary: Delete OAuth client description: Permanently deletes the specified OAuth client from your account. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth client ID responses: '204': description: OAuth client deleted successfully '404': description: OAuth client not found content: application/json: schema: $ref: '#/components/schemas/oauth_Error' example: error: string error_description: string x-latency-category: responsive get: operationId: GetOAuthClient tags: - OAuth Clients summary: Get OAuth client description: Returns the details of a single OAuth client on your account by its ID. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth client ID responses: '200': description: OAuth client details content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthClient' example: data: record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth client not found content: application/json: schema: $ref: '#/components/schemas/oauth_Error' x-latency-category: responsive put: operationId: UpdateOAuthClient tags: - OAuth Clients summary: Update OAuth client description: Updates the specified OAuth client's configuration and returns the updated client. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth client ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthClientUpdateRequest' responses: '200': description: OAuth client updated successfully content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthClient' example: data: record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth client not found content: application/json: schema: $ref: '#/components/schemas/oauth_Error' '422': description: Validation error content: application/json: schema: $ref: '#/components/schemas/oauth_Error' x-latency-category: responsive /oauth/consent/{consent_token}: get: operationId: GetOAuthConsentToken tags: - OAuth Protocol summary: Get OAuth consent token description: Retrieve details about an OAuth consent token parameters: - name: consent_token in: path required: true schema: type: string description: OAuth consent token responses: '200': description: Consent token details content: application/json: schema: $ref: '#/components/schemas/ConsentTokenResponse' example: data: client_id: string name: string requested_scopes: - id: string name: string description: string redirect_uri: https://example.com verified: false '422': description: Invalid consent token content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' /oauth/grants: get: operationId: ListOAuthGrants tags: - OAuth Grants summary: List OAuth grants description: Retrieve a paginated list of OAuth grants for the authenticated user parameters: - name: page[size] in: query schema: type: integer minimum: 1 maximum: 100 default: 20 description: Number of results per page - name: page[number] in: query schema: type: integer minimum: 1 default: 1 description: Page number responses: '200': description: List of OAuth grants content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/OAuthGrant' meta: $ref: '#/components/schemas/oauth_PaginationMeta' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: oauth_grant client_id: string scopes: - string created_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_results: 0 total_pages: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/oauth_Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/oauth_Error' x-latency-category: responsive post: operationId: CreateOAuthGrant tags: - OAuth Protocol summary: Create OAuth grant description: Creates an OAuth authorization grant and returns the grant response for completing the authorization flow. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateOAuthGrantRequest' example: allowed: false consent_token: string responses: '200': description: Grant created successfully content: application/json: schema: $ref: '#/components/schemas/CreateGrantResponse' example: redirect_uri: https://example.com '422': description: Invalid consent token content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' /oauth/grants/{id}: delete: operationId: RevokeOAuthGrant tags: - OAuth Grants summary: Revoke OAuth grant description: Revokes the specified OAuth grant, withdrawing the access previously granted to the client. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth grant ID responses: '200': description: OAuth grant revoked successfully content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthGrant' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: oauth_grant client_id: string scopes: - string created_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth grant not found content: application/json: schema: $ref: '#/components/schemas/oauth_Error' x-latency-category: responsive get: operationId: GetOAuthGrant tags: - OAuth Grants summary: Get OAuth grant description: Returns the details of a single OAuth grant on your account by its ID. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth grant ID responses: '200': description: OAuth grant details content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthGrant' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: oauth_grant client_id: string scopes: - string created_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth grant not found content: application/json: schema: $ref: '#/components/schemas/oauth_Error' x-latency-category: responsive /oauth/introspect: post: operationId: IntrospectOAuthToken tags: - OAuth Protocol summary: Token introspection description: Introspect an OAuth access token to check its validity and metadata security: - oauthClientAuth: [] requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/IntrospectRequest' example: token: string application/json: schema: $ref: '#/components/schemas/IntrospectRequest' example: token: string responses: '200': description: Introspection response content: application/json: schema: $ref: '#/components/schemas/IntrospectResponse' example: active: false scope: string client_id: string exp: 0 iat: 0 iss: string aud: string '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' example: error: invalid_request '401': description: Invalid client credentials content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' example: error: invalid_client /oauth/jwks: get: operationId: GetOAuthJWKS tags: - OAuth Protocol summary: JSON Web Key Set description: Retrieve the JSON Web Key Set for token verification security: [] responses: '200': description: JSON Web Key Set content: application/json: schema: $ref: '#/components/schemas/JWKSet' example: keys: - kty: string use: string alg: string kid: string '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' /oauth/register: post: operationId: RegisterOAuthClient tags: - OAuth Protocol summary: Dynamic client registration description: Register a new OAuth client dynamically (RFC 7591) security: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthDynamicRegistrationRequest' responses: '201': description: Client registered successfully content: application/json: schema: $ref: '#/components/schemas/OAuthDynamicRegistrationResponse' '400': description: Invalid client metadata content: application/json: schema: type: object properties: error: type: string example: invalid_client_metadata error_description: type: string example: The client metadata was invalid invalid_fields: type: object additionalProperties: type: array items: type: string /oauth/token: post: operationId: ExchangeOAuthToken tags: - OAuth Protocol summary: OAuth token endpoint description: Exchange authorization code, client credentials, or refresh token for access token security: - oauthClientAuth: [] - {} requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TokenRequest' application/json: schema: $ref: '#/components/schemas/TokenRequest' responses: '200': description: Token response content: application/json: schema: $ref: '#/components/schemas/TokenResponse' example: access_token: string token_type: Bearer expires_in: 0 scope: string refresh_token: string '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' examples: invalid_request: value: error: invalid_request invalid_grant: value: error: invalid_grant unsupported_grant_type: value: error: unsupported_grant_type invalid_scope: value: error: invalid_scope '401': description: Invalid client credentials content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' example: error: invalid_client /oauth_clients: get: operationId: ListOAuthClients tags: - OAuth Clients summary: List OAuth clients description: Retrieve a paginated list of OAuth clients for the authenticated user parameters: - name: page[size] in: query schema: type: integer minimum: 1 maximum: 100 default: 20 description: Number of results per page - name: page[number] in: query schema: type: integer minimum: 1 default: 1 description: Page number - name: filter[client_type] in: query schema: type: string enum: - confidential - public description: Filter by client type - name: filter[verified] in: query schema: type: boolean description: Filter by verification status - name: filter[allowed_grant_types][contains] in: query schema: type: string enum: - client_credentials - authorization_code - refresh_token description: Filter by allowed grant type - name: filter[name] in: query schema: type: string description: Filter by exact client name - name: filter[name][contains] in: query schema: type: string description: Filter by client name containing text - name: filter[client_id] in: query schema: type: string description: Filter by client ID responses: '200': description: List of OAuth clients content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/OAuthClient' meta: $ref: '#/components/schemas/oauth_oauth_PaginationMeta' example: data: - record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_results: 0 total_pages: 0 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' post: operationId: CreateOAuthClient tags: - OAuth Clients summary: Create OAuth client description: Creates a new OAuth client on your account for authenticating third-party integrations, and returns the created client. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthClientCreateRequest' responses: '201': description: OAuth client created successfully content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthClient' example: data: record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' '422': description: Validation error content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' /oauth_clients/{id}: delete: operationId: DeleteOAuthClient tags: - OAuth Clients summary: Delete OAuth client description: Permanently deletes the specified OAuth client from your account. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth client ID responses: '204': description: OAuth client deleted successfully '404': description: OAuth client not found content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' example: error: string error_description: string get: operationId: GetOAuthClient tags: - OAuth Clients summary: Get OAuth client description: Returns the details of a single OAuth client on your account by its ID. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth client ID responses: '200': description: OAuth client details content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthClient' example: data: record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth client not found content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' put: operationId: UpdateOAuthClient tags: - OAuth Clients summary: Update OAuth client description: Updates the specified OAuth client's configuration and returns the updated client. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth client ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthClientUpdateRequest' responses: '200': description: OAuth client updated successfully content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthClient' example: data: record_type: oauth_client client_id: string name: string org_id: string user_id: string allowed_scopes: - string client_type: public require_pkce: false allowed_grant_types: - client_credentials redirect_uris: - https://example.com created_at: '2024-01-23T18:10:02.574Z' updated_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth client not found content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' '422': description: Validation error content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' /oauth_grants: get: operationId: ListOAuthGrants tags: - OAuth Grants summary: List OAuth grants description: Retrieve a paginated list of OAuth grants for the authenticated user parameters: - name: page[size] in: query schema: type: integer minimum: 1 maximum: 100 default: 20 description: Number of results per page - name: page[number] in: query schema: type: integer minimum: 1 default: 1 description: Page number responses: '200': description: List of OAuth grants content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/OAuthGrant' meta: $ref: '#/components/schemas/oauth_oauth_PaginationMeta' example: data: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: oauth_grant client_id: string scopes: - string created_at: '2024-01-23T18:10:02.574Z' meta: page_number: 0 page_size: 0 total_results: 0 total_pages: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' /oauth_grants/{id}: delete: operationId: RevokeOAuthGrant tags: - OAuth Grants summary: Revoke OAuth grant description: Revokes the specified OAuth grant, withdrawing the access previously granted to the client. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth grant ID responses: '200': description: OAuth grant revoked successfully content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthGrant' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: oauth_grant client_id: string scopes: - string created_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth grant not found content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' get: operationId: GetOAuthGrant tags: - OAuth Grants summary: Get OAuth grant description: Returns the details of a single OAuth grant on your account by its ID. parameters: - name: id in: path required: true schema: type: string format: uuid description: OAuth grant ID responses: '200': description: OAuth grant details content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/OAuthGrant' example: data: id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: oauth_grant client_id: string scopes: - string created_at: '2024-01-23T18:10:02.574Z' '404': description: OAuth grant not found content: application/json: schema: $ref: '#/components/schemas/oauth_oauth_Error' /operator_connect/actions/refresh: post: summary: Refresh Operator Connect integration description: This endpoint will make an asynchronous request to refresh the Operator Connect integration with Microsoft Teams for the current user. This will create new external connections on the user's account if needed, and/or report the integration results as [log messages](https://developers.telnyx.com/api-reference/external-connections/list-all-log-messages#list-all-log-messages). operationId: OperatorConnectRefresh tags: - External Connections responses: '200': description: Successful response content: application/json: schema: type: object title: Operator Connect Refresh Response properties: success: type: boolean description: Describes wether or not the operation was successful example: true message: type: string description: A message describing the result of the operation example: Operator connect refresh already in progress '202': description: Successful response content: application/json: schema: type: object title: Operator Connect Refresh Response properties: success: type: boolean description: Describes wether or not the operation was successful example: true message: type: string description: A message describing the result of the operation example: Operator connect refresh started '401': description: Unauthorized /organizations/users: get: description: Returns a list of the users in your organization. summary: List organization users operationId: ListOrganizationUsers tags: - Organization Users x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/users_PageNumber' - $ref: '#/components/parameters/users_PageSize' - $ref: '#/components/parameters/FilterOrganizationUserStatus' - $ref: '#/components/parameters/FilterOrganizationUserEmail' - $ref: '#/components/parameters/IncludeGroups' responses: '200': description: Successful response with a list of organization users. content: application/json: schema: type: object title: List Organization Users Response properties: data: type: array items: $ref: '#/components/schemas/OrganizationUser' meta: $ref: '#/components/schemas/users_PaginationMeta' '400': $ref: '#/components/responses/users_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/users_UnauthorizedResponse' /organizations/users/users_groups_report: get: description: Returns a report of all users in your organization with their group memberships. This endpoint returns all users without pagination and always includes group information. The report can be retrieved in JSON or CSV format by sending specific content-type headers. summary: Get organization users groups report operationId: GetOrganizationUsersGroupsReport tags: - Organization Users x-group-parameters: 'true' x-endpoint-cost: medium parameters: - name: Accept in: header description: Specify the response format. Use 'application/json' for JSON format or 'text/csv' for CSV format. required: false schema: type: string enum: - application/json - text/csv default: application/json responses: '200': description: Successful response with a list of organization users and their group memberships. content: application/json: schema: type: object title: Users Groups Report Response properties: data: type: array items: $ref: '#/components/schemas/OrganizationUserWithGroups' example: data: - id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: organization_sub_user email: user@example.com user_status: enabled organization_user_bypasses_sso: false created_at: '2018-02-02T22:25:27.521Z' last_sign_in_at: '2018-02-02T22:25:27.521Z' groups: - id: 7b09cdc3-8948-47f0-aa62-74ac943d6c59 name: Engineering - id: 8c09cdc3-8948-47f0-aa62-74ac943d6c60 name: Sales - id: 9d09cdc3-8948-47f0-aa62-74ac943d6c61 record_type: organization_owner email: owner@example.com user_status: enabled organization_user_bypasses_sso: false created_at: '2018-01-01T00:00:00.000Z' last_sign_in_at: '2018-02-02T22:25:27.521Z' groups: [] text/csv: schema: type: string description: 'CSV formatted report of users and their groups. Columns: id, email, user_status, created_at, last_sign_in_at, groups (comma-separated list of group names).' example: 'id,email,user_status,created_at,last_sign_in_at,groups 6a09cdc3-8948-47f0-aa62-74ac943d6c58,user@example.com,enabled,2018-02-02T22:25:27.521Z,2018-02-02T22:25:27.521Z,"Engineering, Sales"' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/users_UnauthorizedResponse' '404': $ref: '#/components/responses/users_NotFoundResponse' /organizations/users/{id}: get: description: Returns the details of a user in your organization, optionally including the groups the user belongs to. summary: Get organization user operationId: GetOrganizationUser tags: - Organization Users parameters: - name: id in: path description: Organization User ID required: true schema: type: string - $ref: '#/components/parameters/IncludeGroups' x-group-parameters: 'true' x-endpoint-cost: medium responses: '200': description: Successful response with details about an Organization User. content: application/json: schema: type: object title: Organization User Response properties: data: $ref: '#/components/schemas/OrganizationUser' '400': $ref: '#/components/responses/users_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/users_UnauthorizedResponse' '404': $ref: '#/components/responses/users_NotFoundResponse' /organizations/users/{id}/actions/remove: post: description: Removes the specified user from your organization and returns the result of the removal. summary: Delete organization user operationId: DeleteOrganizationUser tags: - Organization Users parameters: - name: id in: path description: Organization User ID required: true schema: type: string x-group-parameters: 'true' x-endpoint-cost: medium responses: '200': description: Successful response with details about an Organization User. content: application/json: schema: type: object title: Organization User Response properties: data: $ref: '#/components/schemas/OrganizationUser' '400': $ref: '#/components/responses/users_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/users_UnauthorizedResponse' '404': $ref: '#/components/responses/users_NotFoundResponse' /ota_updates: get: summary: List OTA updates operationId: ListOtaUpdates tags: - OTA updates parameters: - $ref: '#/components/parameters/FilterOTAUpdatesConsolidated' - $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SimplifiedOTAUpdate' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' description: Retrieve a paginated list of over-the-air (OTA) update operations for your SIM cards. /ota_updates/{id}: get: summary: Get OTA update description: This API returns the details of an Over the Air (OTA) update. operationId: GetOtaUpdate tags: - OTA updates parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/CompleteOTAUpdate' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /outbound_voice_profiles: get: description: Get all outbound voice profiles belonging to the user that match the given filters. summary: Get all outbound voice profiles operationId: ListOutboundVoiceProfiles tags: - Outbound Voice Profiles x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/outbound-voice-profiles_PageConsolidated' - $ref: '#/components/parameters/outbound-voice-profiles_FilterConsolidated' - $ref: '#/components/parameters/SortOutboundVoiceProfile' responses: '200': description: Successful response content: application/json: schema: type: object title: List Outbound Voice Profiles Response properties: data: type: array items: $ref: '#/components/schemas/OutboundVoiceProfile' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '422': description: Bad request post: description: Creates a new outbound voice profile defining calling permissions, destinations, and limits for outbound calls, and returns the created profile. summary: Create an outbound voice profile operationId: CreateVoiceProfile tags: - Outbound Voice Profiles requestBody: description: Parameters that can be defined when creating an outbound voice profile required: true content: application/json: schema: $ref: '#/components/schemas/CreateOutboundVoiceProfileRequest' responses: '200': description: Successful response content: application/json: schema: type: object title: Outbound Voice Profile Response properties: data: $ref: '#/components/schemas/OutboundVoiceProfile' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request /outbound_voice_profiles/{id}: delete: description: Deletes an existing outbound voice profile. summary: Delete an outbound voice profile operationId: DeleteOutboundVoiceProfile tags: - Outbound Voice Profiles parameters: - $ref: '#/components/parameters/id' responses: '200': description: Successful response content: application/json: schema: type: object title: Outbound Voice Profile Response properties: data: $ref: '#/components/schemas/OutboundVoiceProfile' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request get: description: Retrieves the details of an existing outbound voice profile. summary: Retrieve an outbound voice profile operationId: GetOutboundVoiceProfile tags: - Outbound Voice Profiles parameters: - $ref: '#/components/parameters/id' responses: '200': description: Successful response content: application/json: schema: type: object title: Outbound Voice Profile Response properties: data: $ref: '#/components/schemas/OutboundVoiceProfile' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request patch: description: Updates an existing outbound voice profile. summary: Updates an existing outbound voice profile. operationId: UpdateOutboundVoiceProfile tags: - Outbound Voice Profiles requestBody: description: Parameters that can be updated on an outbound voice profile required: true content: application/json: schema: $ref: '#/components/schemas/UpdateOutboundVoiceProfileRequest' parameters: - $ref: '#/components/parameters/id' responses: '200': description: Successful response content: application/json: schema: type: object title: Outbound Voice Profile Response properties: data: $ref: '#/components/schemas/OutboundVoiceProfile' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request '409': description: Conflict. Another update to this outbound voice profile is still in progress. Wait and retry the request later. content: application/json: schema: $ref: '#/components/schemas/outbound-voice-profiles_ErrorResponse' example: errors: - detail: A previous update to this outbound voice profile is still in progress. Please try again later. /payment/auto_recharge_prefs: get: description: Returns the payment auto recharge preferences. summary: List auto recharge preferences operationId: GetAutoRechargePrefs tags: - AutoRechargePreferences x-endpoint-cost: medium responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AutoRechargePref' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found patch: description: Update payment auto recharge preferences. summary: Update auto recharge preferences operationId: UpdateAutoRechargePrefs tags: - AutoRechargePreferences x-endpoint-cost: medium requestBody: description: Details to update auto recharge preferences required: true content: application/json: schema: $ref: '#/components/schemas/AutoRechargePrefRequest' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/AutoRechargePref' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request /phone_number_blocks/jobs: get: summary: Lists the phone number blocks jobs operationId: ListPhoneNumberBlocksJobs tags: - Phone Number Blocks Background Jobs x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: sort in: query description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. required: false schema: type: string enum: - created_at example: created_at - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[status]' schema: type: object properties: type: type: string enum: - delete_phone_number_block example: delete_phone_number_block description: Identifies the type of the background job. status: type: string enum: - pending - in_progress - completed - failed example: in_progress description: Identifies the status of the background job. responses: '200': description: Successful response with a list of phone number blocks background jobs. content: application/json: schema: type: object title: List Phone Number Blocks Background Jobs Response properties: data: type: array items: $ref: '#/components/schemas/PhoneNumberBlocksJob' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns background jobs that operate on phone-number blocks. Results can be filtered by job type and status, sorted by creation time, and include pagination metadata. /phone_number_blocks/jobs/delete_phone_number_block: post: x-latency-category: background summary: Deletes all numbers associated with a phone number block description: Creates a new background job to delete all the phone numbers associated with the given block. We will only consider the phone number block as deleted after all phone numbers associated with it are removed, so multiple executions of this job may be necessary in case some of the phone numbers present errors during the deletion process. operationId: CreatePhoneNumberBlockDeletionJob tags: - Phone Number Blocks Background Jobs x-group-parameters: 'true' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PhoneNumberBlocksJobDeletePhoneNumberBlockRequest' responses: '202': description: Block deletion job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id} with the job id until it completes. content: application/json: schema: type: object title: Phone Number Blocks Job Delete Phone Number Block properties: data: $ref: '#/components/schemas/PhoneNumberBlocksJob' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /phone_number_blocks/jobs/{id}: get: summary: Retrieves a phone number blocks job operationId: GetPhoneNumberBlocksJob tags: - Phone Number Blocks Background Jobs parameters: - name: id in: path description: Identifies the Phone Number Blocks Job. required: true schema: type: string x-group-parameters: 'true' responses: '200': description: Phone number blocks job details. content: application/json: schema: type: object title: Phone Number Blocks Job properties: data: $ref: '#/components/schemas/PhoneNumberBlocksJob' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns the status and details of the phone-number-block background job identified by `id`. /phone_numbers: get: summary: List phone numbers operationId: ListPhoneNumbers tags: - Phone Number Configurations x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: sort in: query description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. required: false schema: type: string enum: - purchased_at - phone_number - connection_name - usage_payment_method example: connection_name - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[phone_number], filter[status], filter[country_iso_alpha2], filter[connection_id], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference], filter[number_type], filter[source]' schema: type: object properties: tag: type: string description: Filter by phone number tags. without_tags: type: string description: When set to 'true', filters for phone numbers that do not have any tags applied. All other values are ignored. enum: - 'true' - 'false' phone_number: type: string description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\ \ will result in no values being returned." status: type: string enum: - purchase-pending - purchase-failed - port-pending - active - deleted - port-failed - emergency-only - ported-out - port-out-pending example: active description: Filter by phone number status. country_iso_alpha2: oneOf: - type: string example: US - type: array items: type: string example: - US - CA description: Filter by phone number country ISO alpha-2 code. Can be a single value or an array of values. connection_id: type: string example: '1521916448077776306' description: Filter by connection_id. voice.connection_name: type: object description: Filter by voice connection name pattern matching. properties: contains: type: string example: test description: Filter contains connection name. Requires at least three characters. starts_with: type: string example: test description: Filter starts with connection name. Requires at least three characters. ends_with: type: string example: test description: Filter ends with connection name. Requires at least three characters. eq: type: string example: test description: Filter by connection name. additionalProperties: false voice.usage_payment_method: type: string enum: - pay-per-minute - channel example: channel description: Filter by usage_payment_method. billing_group_id: type: string example: 62e4bf2e-c278-4282-b524-488d9c9c43b2 description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'. emergency_address_id: type: string example: '9102160989215728032' description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'. customer_reference: type: string description: Filter numbers via the customer_reference set. number_type: type: object description: Filter phone numbers by phone number type. properties: eq: type: string enum: - local - national - toll_free - mobile - shared_cost description: Filter phone numbers by phone number type. additionalProperties: false source: type: string enum: - ported - purchased description: Filter phone numbers by their source. Use 'ported' for numbers ported from other carriers, or 'purchased' for numbers bought directly from Telnyx. - name: handle_messaging_profile_error in: query description: Although it is an infrequent occurrence, due to the highly distributed nature of the Telnyx platform, it is possible that there will be an issue when loading in Messaging Profile information. As such, when this parameter is set to `true` and an error in fetching this information occurs, messaging profile related fields will be omitted in the response and an error message will be included instead of returning a 503 error. schema: type: string enum: - 'true' - 'false' example: 'false' default: 'false' responses: '200': description: Successful response with a list of phone numbers. content: application/json: schema: type: object title: List Phone Numbers Response required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/numbers_PhoneNumberDetailed' meta: $ref: '#/components/schemas/PaginationMeta' errors: type: array items: $ref: '#/components/schemas/numbers_Error_73c9788e53' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns phone numbers associated with the account. Results support pagination, sorting, and filters for number attributes, status, source, connections, billing groups, emergency addresses, tags, and customer references. /phone_numbers/actions/verify_ownership: post: summary: Verify ownership of phone numbers description: Verifies ownership of the provided phone numbers and returns a mapping of numbers to their IDs, plus a list of numbers not found in the account. operationId: VerifyPhoneNumberOwnership tags: - Phone Number Configurations x-endpoint-cost: light requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PhoneNumberVerifyOwnershipRequest' responses: '200': description: Phone number ownership verification completed. content: application/json: schema: type: object title: Phone Number Verify Ownership Response properties: data: $ref: '#/components/schemas/numbers_PhoneNumberVerifyOwnershipResponse' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /phone_numbers/csv_downloads: get: summary: List CSV downloads operationId: ListCsvDownloads tags: - CSV Downloads x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' responses: '200': description: Successful response with a list of CSV downloads. content: application/json: schema: type: object title: List CSV Downloads Response properties: data: type: array items: $ref: '#/components/schemas/CsvDownload' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns CSV export jobs created for account phone numbers, including each export's current status and pagination metadata. post: x-latency-category: background summary: Create a CSV download operationId: CreateCsvDownload tags: - CSV Downloads parameters: - name: csv_format in: query description: Which format to use when generating the CSV file. The default for backwards compatibility is 'V1' required: false schema: type: string enum: - V1 - V2 example: V2 default: V1 - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[has_bundle], filter[tag], filter[connection_id], filter[phone_number], filter[status], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference]' schema: type: object properties: has_bundle: type: string description: Filter by phone number that have bundles. tag: type: string description: Filter by phone number tags. connection_id: type: string example: '1521916448077776306' description: Filter by connection_id. phone_number: type: string description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\ \ will result in no values being returned." status: type: string enum: - purchase-pending - purchase-failed - port-pending - active - deleted - port-failed - emergency-only - ported-out - port-out-pending example: active description: Filter by phone number status. voice.connection_name: type: object description: Filter by voice connection name pattern matching. properties: contains: type: string example: test description: Filter contains connection name. Requires at least three characters. starts_with: type: string example: test description: Filter starts with connection name. Requires at least three characters. ends_with: type: string example: test description: Filter ends with connection name. Requires at least three characters. eq: type: string example: test description: Filter by connection name. additionalProperties: false voice.usage_payment_method: type: string enum: - pay-per-minute - channel example: channel description: Filter by usage_payment_method. billing_group_id: type: string example: 62e4bf2e-c278-4282-b524-488d9c9c43b2 description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'. emergency_address_id: type: string example: '9102160989215728032' description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'. customer_reference: type: string description: Filter numbers via the customer_reference set. - name: include_managed_accounts in: query description: When true, the CSV includes phone numbers from all managed accounts in addition to the requesting account's own numbers. Only applies to V2 format; ignored for V1. The export appends `user_id` and `email` columns identifying the account that owns each number. When a filter is provided, it applies to the combined set of numbers. Requires access to managed accounts; requests without that access are rejected. required: false schema: type: boolean default: false x-endpoint-cost: medium responses: '200': description: Successful response with details about a CSV download. content: application/json: schema: type: object title: CSV Download Response properties: data: type: array items: $ref: '#/components/schemas/CsvDownload' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Starts generation of a CSV export for phone numbers matching the supplied filters. The `csv_format` parameter selects the output format, and the response contains the resulting download record. /phone_numbers/csv_downloads/{id}: get: x-latency-category: background summary: Retrieve a CSV download operationId: GetCsvDownload tags: - CSV Downloads x-endpoint-cost: medium parameters: - name: id in: path description: Identifies the CSV download. required: true schema: type: string responses: '200': description: Successful response with details about a CSV download. content: application/json: schema: type: object title: CSV Download Response properties: data: type: array items: $ref: '#/components/schemas/CsvDownload' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns the current status and download details for the CSV export identified by `id`. /phone_numbers/jobs: get: summary: Lists the phone numbers jobs operationId: ListPhoneNumbersJobs tags: - Bulk Phone Number Operations x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: sort in: query description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. required: false schema: type: string enum: - created_at example: created_at - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[phone_number], filter[phone_number][], filter[status][], filter[customer_reference]' schema: type: object properties: type: type: string enum: - update_emergency_settings - delete_phone_numbers - update_phone_numbers example: update_emergency_settings description: Identifies the type of the background job. customer_reference: type: string minLength: 1 maxLength: 250 example: yourcustomerrefhere description: Exact, case-sensitive match for the customer reference supplied when the job was created. Only jobs created within the last 90 days are returned, including for accounts otherwise exempt from job retention limits. Searches the stored job reference, not the current reference on a phone number. Multiple jobs may share a reference. Combines with the other filters and account ownership. Supply a single non-blank string of up to 250 characters, without null characters, using `filter[customer_reference]=yourcustomerrefhere`. Whitespace is preserved; blank strings, arrays, and objects return HTTP 422. An invalid filter value returns HTTP 422. The literal string `null` is matched as text. phone_number: oneOf: - type: string example: +15551234567,1234567890123456789 description: One E.164 phone number or Telnyx Phone Number ID, or a comma-separated list of up to 10 values. - type: array minItems: 1 maxItems: 10 items: type: string minLength: 1 example: - '+15551234567' - '1234567890123456789' description: Up to 10 E.164 phone numbers or Telnyx Phone Number IDs. Use repeated `filter[phone_number][]` parameters. description: Returns jobs that targeted any of the supplied account-owned phone numbers. Values beginning with `+` must contain 1 to 20 digits after the plus sign. The 10-value limit is enforced before duplicate values are removed. Unmatched or non-account-owned identifiers return an empty result. Phone-number filtering must be enabled for the account. status: type: array minItems: 1 items: type: string enum: - pending - in_progress - completed - failed - expired example: - pending - in_progress description: Returns jobs with any of the supplied statuses. Use repeated `filter[status][]` parameters; scalar and comma-separated status values are not accepted. responses: '200': description: Successful response with a list of phone numbers background jobs. content: application/json: schema: type: object title: List Phone Numbers Background Jobs Response properties: data: type: array items: $ref: '#/components/schemas/numbers_PhoneNumbersJob' meta: $ref: '#/components/schemas/PaginationMeta' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Invalid sorting value: value: errors: - code: '10015' title: Invalid sorting value detail: The value provided for sorting is not valid. Check the value used and try again. source: pointer: /sort meta: url: https://developers.telnyx.com/docs/overview/errors/10015 Invalid page size: value: errors: - code: '10015' title: Invalid pagination detail: The provided 'page' parameter is invalid. It must be an object with 'size' and/or 'number' with numeric values. source: pointer: page/size meta: url: https://developers.telnyx.com/docs/overview/errors/10015 Invalid page number: value: errors: - code: '10015' title: Invalid pagination detail: The provided 'page' parameter is invalid. It must be an object with 'size' and/or 'number' with numeric values. source: pointer: page/number meta: url: https://developers.telnyx.com/docs/overview/errors/10015 '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns background jobs that operate on phone numbers. Filter by job type, target phone numbers, job status, or creation-time customer reference, and sort by creation time. Multiple phone-number or status values use OR semantics within that filter; different filter categories use AND semantics. Results include pagination metadata. /phone_numbers/jobs/delete_phone_numbers: post: x-latency-category: background summary: Delete a batch of numbers description: Creates a new background job to delete a batch of numbers. At most one thousand numbers can be updated per API call. operationId: CreateDeletePhoneNumbersJob tags: - Bulk Phone Number Operations x-group-parameters: 'true' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PhoneNumbersJobDeletePhoneNumbersRequest' responses: '202': description: Deletion job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id} with the job id until it completes. content: application/json: schema: type: object title: Phone Numbers Job Delete Phone Numbers properties: data: $ref: '#/components/schemas/numbers_PhoneNumbersJob' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '403': $ref: '#/components/responses/numbers_ForbiddenResponse_73c9788e53' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Phone numbers must be present: $ref: '#/components/examples/PhoneNumbersMustBePresent' Maximum allowed phone numbers: $ref: '#/components/examples/MaximumAllowedPhoneNumbers' Minimum allowed phone numbers: $ref: '#/components/examples/MinimumAllowedPhoneNumbers' Mixed IDs and E164 values: $ref: '#/components/examples/MixedIdsAndE164Values' Phone number ownership: $ref: '#/components/examples/PhoneNumberOwnership' Maximum jobs allowed: $ref: '#/components/examples/Maximum20JobsAllowed' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /phone_numbers/jobs/update_emergency_settings: post: x-latency-category: background summary: Update the emergency settings from a batch of numbers description: Creates a background job to update the emergency settings of a collection of phone numbers. At most one thousand numbers can be updated per API call. operationId: CreatePhoneNumbersJobUpdateEmergencySettings tags: - Bulk Phone Number Operations requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PhoneNumbersJobUpdateEmergencySettingsRequest' responses: '202': description: Emergency settings job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id} with the job id until it completes. content: application/json: schema: type: object title: Phone Numbers Enable Emergency properties: data: $ref: '#/components/schemas/numbers_PhoneNumbersJob' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '403': $ref: '#/components/responses/numbers_ForbiddenResponse_73c9788e53' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Phone numbers must be present: $ref: '#/components/examples/PhoneNumbersMustBePresent' Maximum allowed phone numbers: $ref: '#/components/examples/MaximumAllowedPhoneNumbers' Minimum allowed phone numbers: $ref: '#/components/examples/MinimumAllowedPhoneNumbers' Mixed IDs and E164 values: $ref: '#/components/examples/MixedIdsAndE164Values' Phone number ownership: $ref: '#/components/examples/PhoneNumberOwnership' Maximum jobs allowed: value: errors: - code: '10015' title: Bad Request detail: You can have at most 500 pending or in progress jobs source: pointer: /base meta: url: https://developers.telnyx.com/docs/overview/errors/10015 '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /phone_numbers/jobs/update_phone_numbers: post: x-latency-category: background summary: Update a batch of numbers description: 'Creates a new background job to update a batch of numbers. At most one thousand numbers can be updated per API call. At least one of the updateable fields must be submitted. IMPORTANT: You must either specify filters (using the filter parameters) or specific phone numbers (using the phone_numbers parameter in the request body). If you specify filters, ALL phone numbers that match the given filters (up to 1000 at a time) will be updated. If you want to update only specific numbers, you must use the phone_numbers parameter in the request body. When using the phone_numbers parameter, ensure you follow the correct format as shown in the example (either phone number IDs or phone numbers in E164 format).' operationId: CreateUpdatePhoneNumbersJob tags: - Bulk Phone Number Operations x-group-parameters: 'true' parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[has_bundle], filter[tag], filter[connection_id], filter[phone_number], filter[status], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference]' schema: type: object properties: has_bundle: type: string description: Filter by phone number that have bundles. tag: type: string description: Filter by phone number tags. connection_id: type: string example: '1521916448077776306' description: Filter by connection_id. phone_number: type: string description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\ \ will result in no values being returned." status: type: string enum: - purchase-pending - purchase-failed - port-pending - active - deleted - port-failed - emergency-only - ported-out - port-out-pending example: active description: Filter by phone number status. voice.connection_name: type: object description: Filter by voice connection name pattern matching. properties: contains: type: string example: test description: Filter contains connection name. Requires at least three characters. starts_with: type: string example: test description: Filter starts with connection name. Requires at least three characters. ends_with: type: string example: test description: Filter ends with connection name. Requires at least three characters. eq: type: string example: test description: Filter by connection name. additionalProperties: false voice.usage_payment_method: type: string enum: - pay-per-minute - channel example: channel description: Filter by usage_payment_method. billing_group_id: type: string example: 62e4bf2e-c278-4282-b524-488d9c9c43b2 description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'. emergency_address_id: type: string example: '9102160989215728032' description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'. customer_reference: type: string description: Filter numbers via the customer_reference set. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/numbers_PhoneNumbersJobUpdatePhoneNumbersRequest' responses: '202': description: Update job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id} with the job id until it completes. content: application/json: schema: type: object title: Phone Numbers Job Update Phone Numbers properties: data: $ref: '#/components/schemas/numbers_PhoneNumbersJob' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Not authorized: $ref: '#/components/examples/NotAuthorized' Billing group not authorized: value: errors: - code: '10010' title: Authorization Failed detail: The specified billing group either does not exist or is not part of your account source: pointer: /billing_group_id meta: url: https://developers.telnyx.com/docs/overview/errors/10010 '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Phone numbers must be present: $ref: '#/components/examples/PhoneNumbersMustBePresent' Maximum allowed phone numbers: $ref: '#/components/examples/MaximumAllowedPhoneNumbers' Minimum allowed phone numbers: $ref: '#/components/examples/MinimumAllowedPhoneNumbers' Mixed IDs and E164 values: $ref: '#/components/examples/MixedIdsAndE164Values' Phone number ownership: $ref: '#/components/examples/PhoneNumberOwnership' Minimum updateable field: value: errors: - code: '10015' title: Bad Request detail: You must provide at least 1 updateable field. source: pointer: /updateable_fields meta: url: https://developers.telnyx.com/docs/overview/errors/10015 Maximum jobs allowed: $ref: '#/components/examples/Maximum20JobsAllowed' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /phone_numbers/jobs/{id}: get: summary: Retrieve a phone numbers job operationId: RetrievePhoneNumbersJob tags: - Bulk Phone Number Operations parameters: - name: id in: path description: Identifies the Phone Numbers Job. required: true schema: type: string x-group-parameters: 'true' responses: '200': description: Phone numbers job details. content: application/json: schema: type: object title: Phone Numbers Job properties: data: $ref: '#/components/schemas/numbers_PhoneNumbersJob' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Resource not found: value: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. source: pointer: /base meta: url: https://developers.telnyx.com/docs/overview/errors/10005 '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns the status and details of the phone-number background job identified by `id`. /phone_numbers/messaging: get: summary: List phone numbers with messaging settings operationId: ListPhoneNumbersWithMessagingSettings tags: - Number Settings x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter[messaging_profile_id] in: query required: false schema: type: string format: uuid description: Filter by messaging profile ID. - name: filter[phone_number] in: query required: false schema: type: string description: Filter by exact phone number (supports comma-separated list). - name: filter[phone_number][contains] in: query required: false schema: type: string description: Filter by phone number substring. - name: filter[type] in: query required: false schema: type: string enum: - tollfree - longcode - shortcode description: Filter by phone number type. - name: sort[phone_number] in: query required: false schema: type: string enum: - asc - desc description: Sort by phone number. responses: '200': description: Successful response with a list of phone numbers with messaging settings. content: application/json: schema: type: object title: List Messaging Settings Response properties: data: type: array items: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns phone numbers with their current messaging product and messaging-profile assignments. /phone_numbers/regulatory_requirements: get: summary: Retrieve regulatory requirements for a list of phone numbers operationId: ListRegulatoryRequirementsPhoneNumbers tags: - Regulatory Requirements parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number]' schema: type: object properties: phone_number: type: string example: +41215470622,+41215470633 description: Record type phone number/ phone numbers responses: '200': description: An array of Regulatory Requirements Responses content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RegulatoryRequirementsPhoneNumbers' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse' '404': $ref: '#/components/responses/numbers_NotFoundResponse' '422': $ref: '#/components/responses/numbers_UnprocessableEntity' '500': $ref: '#/components/responses/numbers_GenericErrorResponse' x-latency-category: responsive description: Retrieve the regulatory requirements that apply to a list of phone numbers. /phone_numbers/slim: get: summary: Slim List phone numbers description: List phone numbers, This endpoint is a lighter version of the /phone_numbers endpoint having higher performance and rate limit. operationId: SlimListPhoneNumbers tags: - Phone Number Configurations x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: include_connection in: query description: Include the connection associated with the phone number. required: false schema: type: boolean default: false - name: include_tags in: query description: Include the tags associated with the phone number. required: false schema: type: boolean default: false - name: sort in: query description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. required: false schema: type: string enum: - purchased_at - phone_number - connection_name - usage_payment_method example: connection_name - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[phone_number], filter[status], filter[country_iso_alpha2], filter[connection_id], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference], filter[number_type], filter[source]' schema: type: object properties: tag: type: string description: Filter by phone number tags. (This requires the include_tags param) phone_number: type: string description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\ \ will result in no values being returned." status: type: string enum: - purchase-pending - purchase-failed - port_pending - active - deleted - port-failed - emergency-only - ported-out - port-out-pending example: active description: Filter by phone number status. country_iso_alpha2: oneOf: - type: string example: US - type: array items: type: string example: - US - CA description: Filter by phone number country ISO alpha-2 code. Can be a single value or an array of values. connection_id: type: string example: '1521916448077776306' description: Filter by connection_id. voice.connection_name: type: object description: Filter by voice connection name pattern matching (requires include_connection param). properties: contains: type: string example: test description: Filter contains connection name. Requires at least three characters and the include_connection param. starts_with: type: string example: test description: Filter starts with connection name. Requires at least three characters and the include_connection param. ends_with: type: string example: test description: Filter ends with connection name. Requires at least three characters and the include_connection param. eq: type: string example: test description: Filter by connection name. additionalProperties: false voice.usage_payment_method: type: string enum: - pay-per-minute - channel example: channel description: Filter by usage_payment_method. billing_group_id: type: string example: 62e4bf2e-c278-4282-b524-488d9c9c43b2 description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'. emergency_address_id: type: string example: '9102160989215728032' description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'. customer_reference: type: string description: Filter numbers via the customer_reference set. number_type: type: object description: Filter phone numbers by phone number type. properties: eq: type: string enum: - local - national - toll_free - mobile - shared_cost description: Filter phone numbers by phone number type. additionalProperties: false source: type: string enum: - ported - purchased description: Filter phone numbers by their source. Use 'ported' for numbers ported from other carriers, or 'purchased' for numbers bought directly from Telnyx. responses: '200': description: Successful response with a list of phone numbers. content: application/json: schema: type: object title: List Phone Numbers Response properties: data: type: array items: $ref: '#/components/schemas/numbers_SlimPhoneNumberDetailed' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /phone_numbers/voice: get: summary: List phone numbers with voice settings operationId: ListPhoneNumbersWithVoiceSettings tags: - Phone Number Configurations x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53' - name: sort in: query description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. required: false schema: type: string enum: - purchased_at - phone_number - connection_name - usage_payment_method example: connection_name - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[connection_name], filter[customer_reference], filter[voice.usage_payment_method]' schema: type: object properties: phone_number: type: string description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\ \ will result in no values being returned." connection_name: type: object description: Filter by connection name pattern matching. properties: contains: type: string example: test description: Filter contains connection name. Requires at least three characters. additionalProperties: false customer_reference: type: string description: Filter numbers via the customer_reference set. voice.usage_payment_method: type: string enum: - pay-per-minute - channel example: channel description: Filter by usage_payment_method. responses: '200': description: Successful response with a list of phone numbers with voice settings. content: application/json: schema: type: object title: List Phone Numbers With Voice Settings Response properties: data: type: array items: $ref: '#/components/schemas/PhoneNumberWithVoiceSettings' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns account phone numbers together with their voice settings. Results support pagination, sorting, and filters for number, connection name, customer reference, and voice usage payment method. /phone_numbers/{id}: delete: summary: Delete a phone number operationId: DeletePhoneNumber tags: - Phone Number Configurations x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/IntId' responses: '200': description: Successful response with details about a phone number. content: application/json: schema: type: object title: Phone Number Response properties: data: $ref: '#/components/schemas/numbers_PhoneNumberDeletedDetailed' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Deletes the specified phone number from the account. The response contains the phone number's final deleted representation. get: summary: Retrieve a phone number operationId: RetrievePhoneNumber tags: - Phone Number Configurations x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/IntId' responses: '200': description: Successful response with details about a phone number. content: application/json: schema: type: object title: Phone Number Response properties: data: $ref: '#/components/schemas/numbers_PhoneNumberDetailed' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns the detailed configuration and current state of the phone number identified by `id`. patch: summary: Update a phone number operationId: UpdatePhoneNumber tags: - Phone Number Configurations x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/IntId' requestBody: description: Updated settings for the phone number. required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePhoneNumberRequest' responses: '200': description: Successful response with details about a phone number. content: application/json: schema: type: object title: Phone Number Response properties: data: $ref: '#/components/schemas/numbers_PhoneNumberDetailed' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Updates the configurable settings of the specified phone number. The response contains the complete updated phone-number representation. /phone_numbers/{id}/actions/bundle_status_change: patch: summary: Change the bundle status for a phone number (set to being in a bundle or remove from a bundle) operationId: PhoneNumberBundleStatusChange tags: - Phone Number Configurations x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/IntId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PhoneNumberBundleStatusChangeRequest' responses: '200': description: Phone number bundle status change success content: application/json: schema: type: object title: Phone Number Bundle Status Change properties: data: $ref: '#/components/schemas/PhoneNumberWithVoiceSettings' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Adds the specified phone number to a bundle or removes it from a bundle according to the requested status change. The response contains the phone number with its updated bundle state. /phone_numbers/{id}/actions/enable_emergency: post: summary: Enable emergency for a phone number operationId: EnablePhoneNumberEmergency tags: - Phone Number Configurations x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/IntId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PhoneNumberEnableEmergencyRequest' responses: '200': description: Phone number emergency enabled. content: application/json: schema: type: object title: Phone Number Enable Emergency properties: data: $ref: '#/components/schemas/PhoneNumberWithVoiceSettings' '202': description: Phone number emergency requested. content: application/json: schema: type: object title: Phone Number Enable Emergency properties: data: $ref: '#/components/schemas/PhoneNumberWithVoiceSettings' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Associates emergency-service settings with the specified phone number. The operation returns the updated phone-number configuration when completed immediately or an accepted state when processing continues asynchronously. /phone_numbers/{id}/messaging: get: summary: Retrieve a phone number with messaging settings operationId: GetPhoneNumberMessagingSettings tags: - Number Settings parameters: - name: id in: path description: Identifies the type of resource. required: true schema: type: string responses: '200': description: Successful response with details about a phone number including messaging settings. content: application/json: schema: type: object title: Retrieve Messaging Settings Response properties: data: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the messaging product and messaging-profile assignment for the specified phone number. patch: summary: Update the messaging profile and/or messaging product of a phone number operationId: UpdatePhoneNumberMessagingSettings tags: - Number Settings parameters: - name: id in: path description: The phone number to update. required: true schema: type: string requestBody: description: 'The new configuration to set for this phone number. To avoid modifying a value, either omit the field or set its value to `null`.' required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePhoneNumberMessagingSettingsRequest' responses: '200': description: Successful response with details about a phone number including messaging settings. content: application/json: schema: type: object title: Retrieve Messaging Settings Response properties: data: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the messaging product, messaging profile, or both for the specified phone number. /phone_numbers/{id}/voice: get: summary: Retrieve a phone number with voice settings operationId: GetPhoneNumberVoiceSettings tags: - Phone Number Configurations x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/IntId' responses: '200': description: Successful response with details about a phone number including voice settings. content: application/json: schema: type: object title: Retrieve Phone Number Voice Response properties: data: $ref: '#/components/schemas/PhoneNumberWithVoiceSettings' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns the specified phone number together with its current voice configuration. patch: summary: Update a phone number with voice settings operationId: UpdatePhoneNumberVoiceSettings tags: - Phone Number Configurations x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/IntId' requestBody: description: Updated voice settings for the phone number. required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest' responses: '200': description: Successful response with details about a phone number including voice settings. content: application/json: schema: type: object title: Retrieve Phone Number Voice Response properties: data: $ref: '#/components/schemas/PhoneNumberWithVoiceSettings' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Updates the voice configuration for the specified phone number. The response contains the phone number with its updated voice settings. /phone_numbers/{phone_number_id}/voicemail: get: description: Returns the voicemail settings for a phone number summary: Get voicemail operationId: GetVoicemail tags: - Voicemail responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/VoicemailPrefResponse' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found parameters: - name: phone_number_id in: path description: The ID of the phone number. example: '123455678900' required: true schema: type: string patch: description: 'Update voicemail settings for a phone number. You can also configure a custom greeting by setting the `greeting` object: use `mode` `custom_greeting` together with a `media_name` that points to an audio file uploaded through the Media Storage API, or `mode` `default` to use the standard system greeting.' summary: Update voicemail operationId: UpdateVoicemail tags: - Voicemail requestBody: description: Details to update required: true content: application/json: schema: $ref: '#/components/schemas/VoicemailRequest' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/VoicemailPrefResponse' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request post: description: 'Create voicemail settings for a phone number. You can also configure a custom greeting by setting the `greeting` object: use `mode` `custom_greeting` together with a `media_name` that points to an audio file uploaded through the Media Storage API, or `mode` `default` to use the standard system greeting.' summary: Create voicemail operationId: CreateVoicemail tags: - Voicemail requestBody: description: Details to create required: true content: application/json: schema: $ref: '#/components/schemas/VoicemailRequest' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/VoicemailPrefResponse' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request /phone_numbers_regulatory_requirements: get: summary: Retrieve regulatory requirements for a list of phone numbers operationId: ListRegulatoryRequirementsPhoneNumbers tags: - Regulatory Requirements parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number]' schema: type: object properties: phone_number: type: string example: +41215470622,+41215470633 description: Record type phone number/ phone numbers responses: '200': description: An array of Regulatory Requirements Responses content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RegulatoryRequirementsPhoneNumbers' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns the regulatory requirements that apply to the supplied comma-separated phone numbers. The response includes the matching requirement records and pagination metadata. /portability_checks: post: summary: Run a portability check tags: - Phone Number Porting description: Runs a portability check, returning the results immediately. operationId: PostPortabilityCheck requestBody: required: true content: application/json: schema: type: object properties: phone_numbers: type: array items: type: string description: The list of +E.164 formatted phone numbers to check for portability example: - '+13035550000' - '+13035550001' - '+13035550002' responses: '201': description: PortabilityCheck Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortabilityCheckDetails' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting/events: get: summary: List all porting events tags: - Porting Orders description: Returns a paginated list of porting-related events on your account, such as status changes on porting orders. Supports filtering and is useful for auditing or reconciling webhook deliveries. operationId: listPortingEvents parameters: - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[porting_order_id], filter[created_at][gte], filter[created_at][lte]' schema: type: object properties: type: type: string enum: - porting_order.deleted - porting_order.loa_updated - porting_order.messaging_changed - porting_order.status_changed - porting_order.sharing_token_expired - porting_order.new_comment - porting_order.split example: porting_order.deleted description: Filter by event type. porting_order_id: type: string format: uuid example: 34dc46a9-53ed-4e01-9454-26227ea13326 description: Filter by porting order ID. created_at: type: object properties: gte: type: string format: date-time description: Filter by created at greater than or equal to. example: '2021-01-01T00:00:00Z' lte: type: string format: date-time description: Filter by created at less than or equal to. example: '2021-01-01T00:00:00Z' description: Created at date range filtering operations responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingEvent' meta: $ref: '#/components/schemas/PaginationMeta' '422': description: Unprocessable entity. Check the 'detail' field in response for details. '500': description: Internal server error /porting/events/{id}: get: summary: Show a porting event tags: - Porting Orders description: Returns the details of a single porting event, including its type and payload. operationId: showPortingEvent parameters: - name: id description: Identifies the porting event. in: path required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingEvent' '404': description: Not found '500': description: Internal server error /porting/events/{id}/republish: post: summary: Republish a porting event tags: - Porting Orders description: Republishes the specified porting event, triggering re-delivery of the corresponding webhook to your account. operationId: republishPortingEvent parameters: - name: id description: Identifies the porting event. in: path required: true schema: type: string format: uuid responses: '204': description: No content '404': description: Not found '500': description: Internal server error /porting/loa_configurations: get: tags: - Porting Orders summary: List LOA configurations description: Returns a paginated list of your LOA (Letter of Authorization) configurations. LOA configurations customize the company details and branding used on generated LOA documents. operationId: ListLoaConfigurations parameters: - $ref: '#/components/parameters/porting-order_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingLOAConfiguration' meta: $ref: '#/components/schemas/PaginationMeta' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error post: tags: - Porting Orders summary: Create a LOA configuration description: Creates a new LOA configuration with your company details and branding for use when generating LOA documents for porting orders. operationId: CreateLoaConfiguration requestBody: $ref: '#/components/requestBodies/CreatePortingLOAConfiguration' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingLOAConfiguration' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /porting/loa_configurations/preview: post: tags: - Porting Orders summary: Preview the LOA configuration parameters description: Preview the LOA template that would be generated without need to create LOA configuration. operationId: PreviewLoaConfigurationParams requestBody: $ref: '#/components/requestBodies/CreatePortingLOAConfiguration' responses: '200': description: Successful response content: application/pdf: schema: type: string format: binary example: '%PDF-1.4...' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /porting/loa_configurations/{id}: delete: tags: - Porting Orders summary: Delete a LOA configuration description: Permanently deletes the specified LOA configuration so it can no longer be used when generating LOA documents. operationId: DeleteLoaConfiguration parameters: - name: id description: Identifies a LOA configuration. in: path required: true schema: type: string format: uuid responses: '204': description: No content '404': description: Resource not found '500': description: Internal server error get: tags: - Porting Orders summary: Retrieve a LOA configuration description: Returns the details of a single LOA (Letter of Authorization) configuration by its identifier. operationId: GetLoaConfiguration parameters: - name: id description: Identifies a LOA configuration. in: path required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingLOAConfiguration' '404': description: Resource not found '500': description: Internal server error patch: tags: - Porting Orders summary: Update a LOA configuration description: Updates the specified LOA configuration with the provided fields and returns the updated configuration. operationId: UpdateLoaConfiguration parameters: - name: id description: Identifies a LOA configuration. in: path required: true schema: type: string format: uuid requestBody: $ref: '#/components/requestBodies/CreatePortingLOAConfiguration' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingLOAConfiguration' '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /porting/loa_configurations/{id}/preview: get: tags: - Porting Orders summary: Preview a LOA configuration description: Renders a preview of the LOA document produced by this configuration so you can verify company details and branding before using it on porting orders. operationId: PreviewLoaConfiguration parameters: - name: id description: Identifies a LOA configuration. in: path required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/pdf: schema: type: string format: binary example: '%PDF-1.4...' '404': description: Resource not found '500': description: Internal server error /porting/reports: get: tags: - Porting Orders summary: List porting related reports description: List the reports generated about porting operations. operationId: ListPortingReports parameters: - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]' schema: type: object properties: report_type: type: string enum: - export_porting_orders_csv example: export_porting_orders_csv description: Filter reports of a specific type status: type: string enum: - pending - completed example: completed description: Filter reports of a specific status responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingReport' meta: $ref: '#/components/schemas/PaginationMeta' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error post: tags: - Porting Orders summary: Create a porting related report description: Generate reports about porting operations. operationId: CreatePortingReport requestBody: $ref: '#/components/requestBodies/CreatePortingReport' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingReport' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /porting/reports/{id}: get: tags: - Porting Orders summary: Retrieve a report description: Returns the details of a previously requested porting report, including its status and parameters. operationId: GetPortingReport parameters: - name: id description: Identifies a report. in: path required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingReport' '404': description: Resource not found '500': description: Internal server error /porting/uk_carriers: get: summary: List available carriers in the UK tags: - Porting Orders description: Returns the list of UK carriers available for porting, for use when preparing porting orders for UK numbers. operationId: listPortingUKCarriers responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingUKCarrier' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /porting_orders: get: summary: List all porting orders tags: - Porting Orders description: Returns a paginated list of your porting orders. Supports filtering and sorting, and can optionally include the phone numbers attached to each order. operationId: ListPortingOrders parameters: - $ref: '#/components/parameters/porting-order_PageConsolidated' - $ref: '#/components/parameters/QueryIncludePhoneNumbers' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference], filter[customer_group_reference], filter[parent_support_key], filter[phone_numbers.country_code], filter[phone_numbers.carrier_name], filter[misc.type], filter[end_user.admin.entity_name], filter[end_user.admin.auth_person_name], filter[activation_settings.fast_port_eligible], filter[activation_settings.foc_datetime_requested][gt], filter[activation_settings.foc_datetime_requested][lt], filter[phone_numbers.phone_number][contains]' schema: type: object properties: customer_reference: type: string description: Filter results by customer_reference customer_group_reference: type: string description: Filter results by customer_group_reference parent_support_key: type: string description: Filter results by parent_support_key phone_numbers: type: object properties: country_code: type: string description: Filter results by country ISO 3166-1 alpha-2 code carrier_name: type: string description: Filter results by old service provider phone_number: type: object properties: contains: type: string description: Filter results by full or partial phone_number description: Phone number pattern filtering operations misc: type: object properties: type: $ref: '#/components/schemas/PortingOrderType' description: Filter results by porting order type end_user: type: object properties: admin: type: object properties: entity_name: type: string description: Filter results by person or company name auth_person_name: type: string description: Filter results by authorized person activation_settings: type: object properties: fast_port_eligible: type: boolean description: Filter results by fast port eligible foc_datetime_requested: type: object properties: gt: type: string description: Filter results by foc date later than this value example: '2021-03-25T10:00:00.000Z' lt: type: string description: Filter results by foc date earlier than this value example: '2021-03-25T10:00:00.000Z' description: FOC datetime range filtering operations - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - created_at - -created_at - activation_settings.foc_datetime_requested - -activation_settings.foc_datetime_requested example: created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingOrder' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. post: summary: Create a porting order tags: - Porting Orders description: Creates a new porting order to bring phone numbers from another carrier to Telnyx. Complete the order's requirements and then confirm it to submit the port. operationId: CreatePortingOrder requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePortingOrder' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingOrder' example: data: - activation_settings: activation_status: null fast_port_eligible: true foc_datetime_actual: null foc_datetime_requested: null created_at: '2022-03-17T18:01:01Z' customer_reference: null customer_group_reference: null description: FP Telnyx documents: loa: null invoice: null end_user: admin: account_number: null auth_person_name: null billing_phone_number: null business_identifier: null entity_name: null pin_passcode: null tax_identifier: null location: administrative_area: null country_code: null extended_address: null locality: null postal_code: null street_address: null id: b0ea6d6f-de31-4079-a536-992e0c98b037 misc: null old_service_provider_ocn: Unreal Communications parent_support_key: null phone_number_configuration: billing_group_id: null connection_id: null emergency_address_id: null messaging_profile_id: null tags: [] phone_number_type: local phone_numbers: - activation_status: Activate RDY phone_number: '{e.164 TN}' phone_number_type: local portability_status: confirmed porting_order_id: b0ea6d6f-de31-4079-a536-992e0c98b037 porting_order_status: draft record_type: porting_phone_number requirements_status: requirement-info-pending support_key: sr_10b316 porting_phone_numbers_count: 1 record_type: porting_order requirements: [] requirements_met: false status: details: [] value: draft support_key: null updated_at: '2022-03-17T18:01:01Z' user_feedback: user_comment: null user_rating: null messaging: messaging_capable: true enable_messaging: false messaging_port_status: not_applicable messaging_port_completed: false user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75 webhook_url: null '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/exception_types: get: summary: List all exception types tags: - Porting Orders description: Returns a list of all possible exception types for a porting order. operationId: ListExceptionTypes parameters: [] responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingOrdersExceptionType' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/phone_number_configurations: get: summary: List all phone number configurations tags: - Porting Orders description: Returns a list of phone number configurations paginated. operationId: ListPhoneNumberConfigurations parameters: - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_order.status][in][], filter[porting_phone_number][in][], filter[user_bundle_id][in][]' schema: type: object properties: porting_order: type: object properties: status: type: array items: type: string example: in-process enum: - activation-in-progress - cancel-pending - cancelled - draft - exception - foc-date-confirmed - in-process - ported - submitted description: Filter results by specific porting order statuses porting_phone_number: type: array items: type: string format: uuid example: 5d6f7ede-1961-4717-bfb5-db392c5efc2d description: Filter results by a list of porting phone number IDs user_bundle_id: type: array items: type: string format: uuid example: 5d6f7ede-1961-4717-bfb5-db392c5efc2d description: Filter results by a list of user bundle IDs - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - created_at - -created_at example: created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingPhoneNumberConfiguration' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. post: summary: Create a list of phone number configurations tags: - Porting Orders description: Creates a list of phone number configurations. operationId: CreatePhoneNumberConfigurations requestBody: $ref: '#/components/requestBodies/CreatePortingPhoneNumberConfigurations' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingPhoneNumberConfiguration' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}: delete: summary: Delete a porting order tags: - Porting Orders description: Deletes an existing porting order. This operation is restrict to porting orders in draft state. operationId: DeletePortingOrder parameters: - $ref: '#/components/parameters/PathPortingOrderID' responses: '204': description: No content '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. get: summary: Retrieve a porting order tags: - Porting Orders description: Retrieves the details of an existing porting order. operationId: GetPortingOrder parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/QueryIncludePhoneNumbers' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrder' meta: type: object properties: phone_numbers_url: type: string description: Link to list all phone numbers example: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222 '401': description: Unauthorized patch: summary: Edit a porting order tags: - Porting Orders description: 'Edits the details of an existing porting order. Any or all of a porting orders attributes may be included in the resource object included in a PATCH request. If a request does not include all of the attributes for a resource, the system will interpret the missing attributes as if they were included with their current values. To explicitly set something to null, it must be included in the request with a null value.' operationId: UpdatePortingOrder parameters: - $ref: '#/components/parameters/PathPortingOrderID' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePortingOrder' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrder' meta: type: object properties: phone_numbers_url: type: string description: Link to list all phone numbers example: data: activation_settings: activation_status: null fast_port_eligible: true foc_datetime_actual: null foc_datetime_requested: '2022-04-08T15:00:00Z' created_at: '2022-03-24T14:22:28Z' customer_reference: Test1234 customer_group_reference: Group-789 description: FP Telnyx documents: loa: null invoice: null end_user: admin: account_number: 123abc auth_person_name: Porter McPortersen II billing_phone_number: '+13035551234' business_identifier: abc123 entity_name: Porter McPortersen pin_passcode: '1234' tax_identifier: 1234abcd location: administrative_area: TX country_code: US extended_address: 14th Floor locality: Austin postal_code: '78701' street_address: 600 Congress Avenue id: eef10fb8-f3df-4c67-97c5-e18179723222 misc: new_billing_phone_number: null remaining_numbers_action: null type: full old_service_provider_ocn: Unreal Communications parent_support_key: null phone_number_configuration: billing_group_id: null connection_id: '1752379429071357070' emergency_address_id: null messaging_profile_id: null tags: [] phone_number_type: local porting_phone_numbers_count: 1 record_type: porting_order requirements: [] requirements_met: false status: details: [] value: draft support_key: null updated_at: '2022-03-24T14:26:53Z' user_feedback: user_comment: null user_rating: null messaging: messaging_capable: true enable_messaging: true messaging_port_status: pending messaging_port_completed: false user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75 webhook_url: https://example.com/porting_webhooks meta: phone_numbers_url: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222 '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/actions/activate: post: summary: Activate every number in a porting order asynchronously. tags: - Porting Orders description: Activate each number in a porting order asynchronously. This operation is limited to US FastPort orders only. operationId: ActivatePortingOrder parameters: - $ref: '#/components/parameters/PathPortingOrderID' responses: '202': description: Activation request accepted. Track it via GET /porting_orders/{id}/activation_jobs/{activationJobId} using the returned activation job id. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrdersActivationJob' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/actions/cancel: post: summary: Cancel a porting order tags: - Porting Orders description: Requests cancellation of the porting order and returns the updated order. operationId: CancelPortingOrder parameters: - $ref: '#/components/parameters/PathPortingOrderID' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrder' meta: type: object properties: phone_numbers_url: type: string description: Link to list all phone numbers example: data: activation_settings: activation_status: null fast_port_eligible: true foc_datetime_actual: null foc_datetime_requested: '2022-04-08T15:00:00Z' created_at: '2022-03-24T14:22:28Z' customer_reference: Test1234 customer_group_reference: Group-789 description: FP Telnyx documents: loa: 3a5b98a0-5049-47c3-96e1-aa6c8d119117 invoice: 3a5b98a0-5049-47c3-96e1-aa6c8d119117 end_user: admin: account_number: 123abc auth_person_name: Porter McPortersen II billing_phone_number: '+13035551234' business_identifier: abc123 entity_name: Porter McPortersen pin_passcode: '1234' tax_identifier: 1234abcd location: administrative_area: TX country_code: US extended_address: 14th Floor locality: Austin postal_code: '78701' street_address: 600 Congress Avenue id: eef10fb8-f3df-4c67-97c5-e18179723222 misc: new_billing_phone_number: null remaining_numbers_action: null type: full old_service_provider_ocn: Unreal Communications parent_support_key: pr_4bec1a phone_number_configuration: billing_group_id: null connection_id: '1752379429071357070' emergency_address_id: null messaging_profile_id: null tags: [] phone_number_type: local porting_phone_numbers_count: 1 record_type: porting_order requirements: [] requirements_met: true status: details: [] value: cancel-pending support_key: sr_10b316 updated_at: '2022-03-24T16:43:35Z' user_feedback: user_comment: null user_rating: null user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75 webhook_url: https://example.com/porting_webhooks meta: phone_numbers_url: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222 '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/actions/confirm: post: summary: Submit a porting order. tags: - Porting Orders description: Confirms the porting order and submits it for processing. Make sure all required information and documents are attached before confirming. operationId: ConfirmPortingOrder parameters: - $ref: '#/components/parameters/PathPortingOrderID' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrder' meta: type: object properties: phone_numbers_url: type: string description: Link to list all phone numbers example: data: activation_settings: activation_status: null fast_port_eligible: true foc_datetime_actual: null foc_datetime_requested: '2022-04-08T15:00:00Z' created_at: '2022-03-24T14:22:28Z' customer_reference: Test1234 customer_group_reference: Group-789 description: FP Telnyx documents: loa: 3a5b98a0-5049-47c3-96e1-aa6c8d119117 invoice: 3a5b98a0-5049-47c3-96e1-aa6c8d119117 end_user: admin: account_number: 123abc auth_person_name: Porter McPortersen II billing_phone_number: '+13035551234' business_identifier: abc123 entity_name: Porter McPortersen pin_passcode: '1234' tax_identifier: 1234abcd location: administrative_area: TX country_code: US extended_address: 14th Floor locality: Austin postal_code: '78701' street_address: 600 Congress Avenue id: eef10fb8-f3df-4c67-97c5-e18179723222 misc: new_billing_phone_number: null remaining_numbers_action: null type: full old_service_provider_ocn: Unreal Communications parent_support_key: pr_4bec1a phone_number_configuration: billing_group_id: null connection_id: '1752379429071357070' emergency_address_id: null messaging_profile_id: null tags: [] phone_number_type: local porting_phone_numbers_count: 1 record_type: porting_order requirements: [] requirements_met: true status: details: [] value: in-process support_key: sr_10b316 updated_at: '2022-03-24T16:42:43Z' user_feedback: user_comment: null user_rating: null messaging: messaging_capable: true enable_messaging: false messaging_port_status: not_applicable messaging_port_completed: false user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75 webhook_url: https://example.com/porting_webhooks meta: phone_numbers_url: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222 '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/actions/share: post: summary: Share a porting order tags: - Porting Orders description: Creates a sharing token for a porting order. The token can be used to share the porting order with non-Telnyx users. operationId: SharePortingOrder parameters: - $ref: '#/components/parameters/PathPortingOrderID' requestBody: $ref: '#/components/requestBodies/SharePortingOrder' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrderSharingToken' example: data: id: 03a35311-ad92-46b3-95d7-8ad6dccf2d7c porting_order_id: fd4b86c8-497d-4c6d-9609-a789e4e14cfe expires_in_seconds: 3600 permissions: - porting_order.document.read - porting_order.document.update token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODk4OTQ2NzcsImlzdCI6MTY4OTg5MTA3NywicGVybWlzc2lvbnMiOlsicG9ydGluZ19vcmRlci5kb2N1bWVudC5yZWFkIl0sInBvcnRpbmdfb3JkZXJfaWQiOiJmZDRiODZjOC00OTdkLTRjNmQtOTYwOS1hNzg5ZTRlMTRjZmUifQ.CT0HRF6OLj7VPZ8p5Y_0S8rOL8SEUznwJJkR-YReKwc record_type: porting_order_sharing_token expires_at: '2023-07-20T23:11:17Z' created_at: '2023-07-20T22:11:17.292573Z' '401': description: Unauthorized '404': description: Porting Order not found /porting_orders/{id}/activation_jobs: get: summary: List all porting activation jobs tags: - Porting Orders description: Returns a list of your porting activation jobs. operationId: ListPortingOrderActivationJobs parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/porting-order_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingOrdersActivationJob' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/activation_jobs/{activationJobId}: get: summary: Retrieve a porting activation job tags: - Porting Orders description: Returns the details of a single activation job for the porting order, including its current status. operationId: GetPortingOrdersActivationJob parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/PathPortingOrdersActivationJobID' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrdersActivationJob' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. patch: summary: Update a porting activation job tags: - Porting Orders description: Updates the activation time of a porting activation job. operationId: UpdatePortingOrdersActivationJob parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/PathPortingOrdersActivationJobID' requestBody: $ref: '#/components/requestBodies/UpdatePortingOrdersActivationJob' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrdersActivationJob' '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/additional_documents: get: summary: List additional documents tags: - Porting Orders description: Returns a list of additional documents for a porting order. operationId: ListAdditionalDocuments parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[document_type]' schema: type: object properties: document_type: type: array items: type: string enum: - loa - invoice - csr - other example: loa description: Filter additional documents by a list of document types - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - created_at - -created_at example: created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingAdditionalDocument' meta: $ref: '#/components/schemas/PaginationMeta' example: data: - id: 2acd1061-33cb-49b8-8014-beb6dc3fedbf document_id: 40bc547a-7f96-4cd5-926a-da4842671e88 document_type: loa porting_order_id: 9d7b3b8e-4e67-4837-9c44-d110cd2c82a1 record_type: porting_additional_document created_at: '2023-06-01T10:00:00.00000Z' updated_at: '2023-06-01T10:00:00.00000Z' meta: total_pages: 1 total_results: 1 page_number: 1 page_size: 25 '401': description: Unauthorized '404': description: Resource not found post: summary: Create a list of additional documents tags: - Porting Orders description: Creates a list of additional documents for a porting order. operationId: CreateAdditionalDocuments parameters: - $ref: '#/components/parameters/PathPortingOrderID' requestBody: $ref: '#/components/requestBodies/CreatePortingAdditionalDocuments' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingAdditionalDocument' example: data: - id: 2acd1061-33cb-49b8-8014-beb6dc3fedbf document_id: 40bc547a-7f96-4cd5-926a-da4842671e88 document_type: loa porting_order_id: 9d7b3b8e-4e67-4837-9c44-d110cd2c82a1 record_type: porting_additional_document created_at: '2023-06-01T10:00:00.00000Z' updated_at: '2023-06-01T10:00:00.00000Z' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/additional_documents/{additional_document_id}: delete: summary: Delete an additional document tags: - Porting Orders description: Deletes an additional document for a porting order. operationId: DeleteAdditionalDocument parameters: - $ref: '#/components/parameters/PathPortingOrderID' - name: additional_document_id description: Additional document identification. in: path required: true schema: type: string format: uuid responses: '204': description: No content '401': description: Unauthorized '404': description: Resource not found /porting_orders/{id}/allowed_foc_windows: get: summary: List allowed FOC dates tags: - Porting Orders description: Returns a list of allowed FOC dates for a porting order. operationId: ListAllowedFocWindows parameters: - $ref: '#/components/parameters/PathPortingOrderID' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingOrdersAllowedFocWindow' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized /porting_orders/{id}/comments: get: summary: List all comments of a porting order tags: - Porting Orders description: Returns a list of all comments of a porting order. operationId: ListPortingOrderComments parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/porting-order_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingOrdersComment' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. post: summary: Create a comment for a porting order tags: - Porting Orders parameters: - $ref: '#/components/parameters/PathPortingOrderID' description: Creates a new comment for a porting order. operationId: CreatePortingOrderComment requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePortingOrderComment' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingOrdersComment' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/loa_template: get: summary: Download a porting order loa template tags: - Porting Orders description: Downloads the Letter of Authorization (LOA) template document for this porting order, optionally rendered with a specific LOA configuration. operationId: GetPortingOrderLoaTemplate parameters: - $ref: '#/components/parameters/PathPortingOrderID' - name: loa_configuration_id in: query description: The identifier of the LOA configuration to use for the template. If not provided, the default LOA configuration will be used. example: a36c2277-446b-4d11-b4ea-322e02a5c08d required: false schema: type: string format: uuid responses: '200': description: Successful response content: application/pdf: schema: type: string format: binary example: '%PDF-1.4...' '401': description: Unauthorized /porting_orders/{id}/requirements: get: summary: List porting order requirements tags: - Porting Orders description: Returns a list of all requirements based on country/number type for this porting order. operationId: ListPortingOrderRequirements parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/porting-order_PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingOrderRequirementDetail' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/sub_request: get: summary: Retrieve the associated V1 sub_request_id and port_request_id tags: - Porting Orders description: Retrieve the associated V1 sub_request_id and port_request_id operationId: GetPortingOrderSubRequest parameters: - $ref: '#/components/parameters/PathPortingOrderID' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/GetSubRequestByPortingOrder' '401': description: Unauthorized '404': description: Porting Order not found /porting_orders/{id}/verification_codes: get: summary: List verification codes tags: - Porting Orders description: Returns a list of verification codes for a porting order. operationId: ListVerificationCodes parameters: - $ref: '#/components/parameters/PathPortingOrderID' - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[verified]' schema: type: object properties: verified: type: boolean example: true description: Filter verification codes that have been verified or not - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - created_at - -created_at example: created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingVerificationCode' meta: $ref: '#/components/schemas/PaginationMeta' example: data: - id: 52090326-6533-4421-bcf4-bd0117cf3954 phone_number: '+61424000001' verified: true porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604 created_at: '2020-10-22T15:00:00.000Z' updated_at: '2020-10-22T15:00:00.000Z' - id: cf076b8e-645b-4040-8209-543c5909775f phone_number: '+61424000002' verified: false porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604 created_at: '2020-10-22T15:00:00.000Z' updated_at: '2020-10-22T15:00:00.000Z' meta: total_pages: 1 total_results: 2 page_number: 1 page_size: 2 '401': description: Unauthorized '404': description: Resource not found /porting_orders/{id}/verification_codes/send: post: summary: Send the verification codes description: Send the verification code for all porting phone numbers. tags: - Porting Orders operationId: SendPortingVerificationCodes parameters: - $ref: '#/components/parameters/PathPortingOrderID' requestBody: $ref: '#/components/requestBodies/SendPortingVerificationCodes' responses: '204': description: No content '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{id}/verification_codes/verify: post: summary: Verify the verification code for a list of phone numbers description: Verifies the verification code for a list of phone numbers. tags: - Porting Orders operationId: VerifyPortingVerificationCodes parameters: - $ref: '#/components/parameters/PathPortingOrderID' requestBody: $ref: '#/components/requestBodies/VerifyPortingVerificationCodes' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingVerificationCode' example: data: - id: 52090326-6533-4421-bcf4-bd0117cf3954 phone_number: '+61424000001' verified: true porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604 created_at: '2020-10-22T15:00:00.000Z' updated_at: '2020-10-22T15:00:00.000Z' - id: cf076b8e-645b-4040-8209-543c5909775f phone_number: '+61424000002' verified: false porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604 created_at: '2020-10-22T15:00:00.000Z' updated_at: '2020-10-22T15:00:00.000Z' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{porting_order_id}/action_requirements: get: summary: List action requirements for a porting order tags: - Porting Orders description: Returns a list of action requirements for a specific porting order. operationId: listPortingActionRequirements parameters: - name: porting_order_id in: path description: The ID of the porting order required: true schema: type: string - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[id][in][], filter[requirement_type_id], filter[action_type], filter[status]' schema: type: object properties: id: type: array items: type: string format: uuid description: Filter action requirements by a list of IDs requirement_type_id: type: string format: uuid description: Filter action requirements by requirement type ID action_type: type: string enum: - au_id_verification description: Filter action requirements by action type status: type: string enum: - created - pending - completed - cancelled - failed description: Filter action requirements by status - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - created_at - -created_at - updated_at - -updated_at example: created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order. responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingActionRequirement' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '404': description: Porting order not found '500': description: Internal server error /porting_orders/{porting_order_id}/action_requirements/{id}/initiate: post: summary: Initiate an action requirement tags: - Porting Orders description: Initiates a specific action requirement for a porting order. operationId: initiatePortingActionRequirement parameters: - name: porting_order_id in: path description: The ID of the porting order required: true schema: type: string - name: id in: path description: The ID of the action requirement required: true schema: type: string requestBody: $ref: '#/components/requestBodies/InitiatePortingActionRequirement' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingActionRequirement' '400': description: Bad request '401': description: Unauthorized '404': description: Porting order or action requirement not found '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /porting_orders/{porting_order_id}/associated_phone_numbers: get: summary: List all associated phone numbers tags: - Porting Orders description: Returns a list of all associated phone numbers for a porting order. Associated phone numbers are used for partial porting in GB to specify which phone numbers should be kept or disconnected. operationId: listPortingAssociatedPhoneNumbers parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone numbers required: true schema: type: string format: uuid - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[action]' schema: type: object properties: phone_number: type: string example: '+441234567890' description: Filter results by a phone number. It should be in E.164 format. action: type: string enum: - keep - disconnect example: keep description: Filter results by action type - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - -created_at - created_at example: -created_at default: -created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingAssociatedPhoneNumber' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. post: summary: Create an associated phone number tags: - Porting Orders description: Creates a new associated phone number for a porting order. This is used for partial porting in GB to specify which phone numbers should be kept or disconnected. operationId: createPortingAssociatedPhoneNumber parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number required: true schema: type: string format: uuid requestBody: $ref: '#/components/requestBodies/CreatePortingAssociatedPhoneNumber' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingAssociatedPhoneNumber' '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{porting_order_id}/associated_phone_numbers/{id}: delete: summary: Delete an associated phone number tags: - Porting Orders description: Deletes an associated phone number from a porting order. operationId: deletePortingAssociatedPhoneNumber parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number required: true schema: type: string format: uuid - name: id in: path description: Identifies the associated phone number to be deleted required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingAssociatedPhoneNumber' '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{porting_order_id}/phone_number_blocks: get: summary: List all phone number blocks tags: - Porting Orders description: Returns a list of all phone number blocks of a porting order. operationId: listPortingPhoneNumberBlocks parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number blocks required: true schema: type: string format: uuid - $ref: '#/components/parameters/porting-order_FilterConsolidated' - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - -created_at - created_at example: created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingPhoneNumberBlock' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. post: summary: Create a phone number block tags: - Porting Orders description: Creates a phone number block on the porting order, representing a contiguous range of phone numbers to be ported together. operationId: createPortingPhoneNumberBlock parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number block required: true schema: type: string format: uuid requestBody: $ref: '#/components/requestBodies/CreatePortingPhoneNumberBlock' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingPhoneNumberBlock' '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{porting_order_id}/phone_number_blocks/{id}: delete: summary: Delete a phone number block tags: - Porting Orders description: Deletes the specified phone number block from the porting order. operationId: deletePortingPhoneNumberBlock parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number block required: true schema: type: string format: uuid - name: id in: path description: Identifies the phone number block to be deleted required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingPhoneNumberBlock' '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{porting_order_id}/phone_number_extensions: get: summary: List all phone number extensions tags: - Porting Orders description: Returns a list of all phone number extensions of a porting order. operationId: listPortingPhoneNumberExtensions parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number extensions required: true schema: type: string format: uuid - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_phone_number_id]' schema: type: object properties: porting_phone_number_id: type: string format: uuid example: 04f8f1b9-310c-4a3c-963e-7dfc54765140 description: Filter results by porting phone number id - name: sort in: query style: deepObject explode: true description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]' schema: type: object properties: value: type: string enum: - -created_at - created_at example: created_at description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingPhoneNumberExtension' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. post: summary: Create a phone number extension tags: - Porting Orders description: Creates a phone number extension on the porting order, mapping extension ranges to one of the order's phone numbers. operationId: createPortingPhoneNumberExtension parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number extension required: true schema: type: string format: uuid requestBody: $ref: '#/components/requestBodies/CreatePortingPhoneNumberExtension' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingPhoneNumberExtension' '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. /porting_orders/{porting_order_id}/phone_number_extensions/{id}: delete: summary: Delete a phone number extension tags: - Porting Orders description: Deletes the specified phone number extension from the porting order. operationId: deletePortingPhoneNumberExtension parameters: - name: porting_order_id in: path description: Identifies the Porting Order associated with the phone number extension required: true schema: type: string format: uuid - name: id in: path description: Identifies the phone number extension to be deleted required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortingPhoneNumberExtension' '404': description: Not found '422': description: Unprocessable entity. Check message field in response for details. /porting_phone_numbers: get: summary: List all porting phone numbers tags: - Porting Orders description: Returns a list of your porting phone numbers. operationId: ListPortingPhoneNumbers parameters: - $ref: '#/components/parameters/porting-order_PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_order_status]' schema: type: object properties: porting_order_status: type: string enum: - draft - in-process - submitted - exception - foc-date-confirmed - cancel-pending - ported - cancelled example: in-process description: Filter results by porting order status responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortingPhoneNumber' meta: $ref: '#/components/schemas/PaginationMeta' text/csv: schema: type: string example: "phone_number,phone_number_type,porting_order_id,support_key,porting_order_status\r\n+12003155566,local,5f940c35-ef28-4408-bb95-af73b047d589,sr_a12345,draft\r\ \n" '401': description: Unauthorized '422': description: Unprocessable entity. Check message field in response for details. /portouts: get: summary: List portout requests description: Returns the portout requests according to filters operationId: ListPortoutRequest tags: - Number Portout parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[carrier_name], filter[country_code], filter[country_code_in], filter[foc_date], filter[inserted_at], filter[phone_number], filter[pon], filter[ported_out_at], filter[spid], filter[status], filter[status_in], filter[support_key]' schema: type: object properties: carrier_name: type: string description: Filter by new carrier name. pon: type: string description: Filter by Port Order Number (PON). spid: type: string description: Filter by new carrier spid. status: type: string enum: - pending - authorized - ported - rejected - rejected-pending - canceled description: Filter by portout status. status_in: type: array items: type: string enum: - pending - authorized - ported - rejected - rejected-pending - canceled description: Filter by a list of portout statuses country_code: type: string description: Filter by 2-letter country code example: US country_code_in: type: array items: type: string example: - CA - US description: Filter by a list of 2-letter country codes ported_out_at: type: object description: Filter by ported_out_at date range using nested operations properties: gte: type: string format: date-time example: '2024-09-04T00:00:00.000Z' description: Filter by ported_out_at date greater than or equal. lte: type: string format: date-time example: '2024-09-04T00:00:00.000Z' description: Filter by ported_out_at date less than or equal. inserted_at: type: object description: Filter by inserted_at date range using nested operations properties: gte: type: string format: date-time example: '2024-09-04T00:00:00.000Z' description: Filter by inserted_at date greater than or equal. lte: type: string format: date-time example: '2024-09-04T00:00:00.000Z' description: Filter by inserted_at date less than or equal. foc_date: type: string format: date-time example: '2024-09-04T00:00:00.000Z' description: Filter by foc_date. Matches all portouts with the same date phone_number: type: string example: '+13035551212' description: Filter by a phone number on the portout. Matches all portouts with the phone number support_key: type: string example: PO_abc123 description: Filter by the portout's support_key responses: '200': description: Portout Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortoutDetails' meta: $ref: '#/components/schemas/Metadata' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /portouts/events: get: summary: List all port-out events tags: - Number Portout description: Returns a paginated list of port-out events on your account, such as status changes on port-out requests, with support for filtering. operationId: listPortoutEvents parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[event_type], filter[portout_id], filter[created_at]' schema: type: object properties: event_type: type: string enum: - portout.status_changed - portout.new_comment - portout.foc_date_changed example: portout.status_changed description: Filter by event type. portout_id: type: string format: uuid example: 34dc46a9-53ed-4e01-9454-26227ea13326 description: Filter by port-out order ID. created_at: type: object description: Filter by created_at date range using nested operations properties: gte: type: string format: date-time example: '2021-01-01T00:00:00Z' description: Filter by created at greater than or equal to. lte: type: string format: date-time example: '2021-01-01T00:00:00Z' description: Filter by created at less than or equal to. responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortoutEvent' meta: $ref: '#/components/schemas/PaginationMeta' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /portouts/events/{id}: get: summary: Show a port-out event tags: - Number Portout description: Returns the details of a single port-out event, including its type and payload. operationId: showPortoutEvent parameters: - name: id description: Identifies the port-out event. in: path required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortoutEvent' '404': description: Not found '500': description: Internal server error /portouts/events/{id}/republish: post: summary: Republish a port-out event tags: - Number Portout description: Republishes the specified port-out event, triggering re-delivery of the corresponding webhook to your account. operationId: republishPortoutEvent parameters: - name: id description: Identifies the port-out event. in: path required: true schema: type: string format: uuid responses: '204': description: No content '404': description: Not found '500': description: Internal server error /portouts/rejections/{portout_id}: get: tags: - Number Portout summary: List eligible port-out rejection codes for a specific order description: Given a port-out ID, list rejection codes that are eligible for that port-out operationId: ListPortoutRejections parameters: - name: portout_id description: Identifies a port out order. in: path required: true schema: type: string example: 329d6658-8f93-405d-862f-648776e8afd7 - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[code], filter[code][in]' schema: type: object properties: code: oneOf: - type: integer example: 1002 description: Filter rejections of a specific code - type: array items: type: integer example: - 1002 - 1003 description: Filter rejections in a list of codes responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortoutRejection' '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /portouts/reports: get: tags: - Number Portout summary: List port-out related reports description: List the reports generated about port-out operations. operationId: ListPortoutReports parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]' schema: type: object properties: report_type: type: string enum: - export_portouts_csv example: export_portouts_csv description: Filter reports of a specific type status: type: string enum: - pending - completed example: completed description: Filter reports of a specific status responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortoutReport' meta: $ref: '#/components/schemas/PaginationMeta' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error post: tags: - Number Portout summary: Create a port-out related report description: Generate reports about port-out operations. operationId: CreatePortoutReport requestBody: $ref: '#/components/requestBodies/CreatePortoutReport' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortoutReport' '422': description: Unprocessable entity. Check message field in response for details. '500': description: Internal server error /portouts/reports/{id}: get: tags: - Number Portout summary: Retrieve a report description: Returns the details of a previously requested port-out report, including its status and parameters. operationId: GetPortoutReport parameters: - name: id description: Identifies a report. in: path required: true schema: type: string format: uuid responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortoutReport' '404': description: Resource not found '500': description: Internal server error /portouts/{id}: get: summary: Get a portout request description: Returns the portout request based on the ID provided operationId: FindPortoutRequest tags: - Number Portout parameters: - name: id in: path description: Portout id required: true schema: type: string format: uuid responses: '200': description: Portout Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortoutDetails' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /portouts/{id}/comments: get: summary: List all comments for a portout request description: Returns a list of comments for a portout request. operationId: FindPortoutComments tags: - Number Portout parameters: - name: id in: path description: Portout id required: true schema: type: string format: uuid responses: '200': description: Portout Comments content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortoutComment' meta: $ref: '#/components/schemas/Metadata' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. post: summary: Create a comment on a portout request description: Creates a comment on the specified port-out request and returns the created comment. operationId: PostPortRequestComment tags: - Number Portout parameters: - name: id in: path description: Portout id required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: body: type: string description: Comment to post on this portout request example: body: string responses: '201': description: Portout Comment Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortoutComment' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /portouts/{id}/supporting_documents: get: summary: List supporting documents on a portout request description: List every supporting documents for a portout request. operationId: GetPortRequestSupportingDocuments tags: - Number Portout parameters: - name: id in: path description: Portout id required: true schema: type: string format: uuid responses: '201': description: Portout Supporting Documents content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortOutSupportingDocument' '401': description: Unauthorized '404': description: Resource not found post: summary: Create a list of supporting documents on a portout request description: Creates a list of supporting documents on a portout request. operationId: PostPortRequestSupportingDocuments tags: - Number Portout parameters: - name: id in: path description: Portout id required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: documents: type: array description: List of supporting documents parameters minItems: 1 maxItems: 10 items: type: object required: - type - document_id properties: type: type: string enum: - loa - invoice description: Identifies the type of the document example: loa document_id: format: uuid type: string description: Identifies the associated document example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 responses: '201': description: Portout Supporting Documents content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PortOutSupportingDocument' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /portouts/{id}/{status}: patch: summary: Update Status description: Updates the status of the specified port-out request, using the status path segment to authorize or reject the port-out. operationId: UpdatePortoutStatus tags: - Number Portout parameters: - name: id in: path description: Portout id required: true schema: type: string format: uuid - name: status description: Updated portout status in: path required: true schema: type: string enum: - authorized - rejected-pending requestBody: required: true content: application/json: schema: type: object required: - reason properties: reason: description: Provide a reason if rejecting the port out request type: string example: I do not recognize this transaction host_messaging: description: Indicates whether messaging services should be maintained with Telnyx after the port out completes type: boolean default: false example: false responses: '200': description: Portout Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PortoutDetails' '401': description: Unauthorized '404': description: Resource not found '422': description: Unprocessable entity. Check message field in response for details. /pricing/products: get: summary: List products description: Returns the full product catalog with pagination. Each entry contains a slug, display name, and description. Use the slug to fetch per-product pricing via GET /pricing/products/{slug}. operationId: listPricingProducts tags: - Pricing parameters: - name: page[number] in: query description: Page number (1-based). required: false schema: type: integer minimum: 1 title: Page Number default: 1 - name: page[size] in: query description: Number of items per page (max 100). required: false schema: type: integer minimum: 1 maximum: 100 title: Page Size default: 20 responses: '200': description: Product catalog listing content: application/json: schema: $ref: '#/components/schemas/PricingProductListResponse' example: data: - slug: string name: string description: string meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '400': description: Invalid pagination parameters x-latency-category: responsive security: [] /pricing/products/{slug}: get: summary: Get product pricing description: 'Returns pricing entries for a single product. Most products return standard rate entries with fields like rate, unit, country_iso, direction, and tiers. Inference products return model-specific fields (model, input_rate, output_rate, cached_input_rate) with tiered pricing. Some products use rate decks (pricing_type: rate_deck) where rates are determined dynamically.' operationId: getProductPricing tags: - Pricing parameters: - name: slug in: path description: Product slug from the catalog listing. required: true schema: type: string - name: page[number] in: query description: Page number (1-based). required: false schema: type: integer minimum: 1 title: Page Number default: 1 - name: page[size] in: query description: Number of items per page (max 100). required: false schema: type: integer minimum: 1 maximum: 100 title: Page Size default: 20 - name: filter[country_iso] description: Two-letter ISO 3166-1 alpha-2 country code (uppercase, e.g. US) to filter pricing to a single country. in: query required: false schema: anyOf: - type: string maxLength: 2 minLength: 2 pattern: ^[A-Z]{2}$ - type: 'null' title: Filter[Country Iso] responses: '200': description: Product pricing entries content: application/json: schema: $ref: '#/components/schemas/PricingEntryListResponse' example: data: - name: string rate: 0 unit: string currency: string type: string tiers: - min: 0 rate: 0 max: 1000000 model: string input_rate: string cached_input_rate: string output_rate: string input_tiers: - min: 0 rate: 0 max: 1000000 cached_input_tiers: - min: 0 rate: 0 max: 1000000 output_tiers: - min: 0 rate: 0 max: 1000000 meta: page_number: 0 page_size: 0 total_pages: 0 total_results: 0 '404': description: Product not found x-latency-category: responsive security: [] /private_wireless_gateways: get: summary: Get all Private Wireless Gateways description: Get all Private Wireless Gateways belonging to the user. operationId: GetPrivateWirelessGateways tags: - Private Wireless Gateways parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - name: filter[name] description: The name of the Private Wireless Gateway. in: query required: false schema: type: string example: my private gateway - name: filter[ip_range] description: The IP address range of the Private Wireless Gateway. in: query required: false schema: type: string example: 192.168.0.0/24 - name: filter[region_code] description: The name of the region where the Private Wireless Gateway is deployed. in: query required: false schema: type: string example: dc2 - name: filter[created_at] description: Private Wireless Gateway resource creation date. in: query required: false schema: type: string example: '2018-02-02T22:25:27.521Z' - name: filter[updated_at] description: When the Private Wireless Gateway was last updated. in: query required: false schema: type: string example: '2018-02-02T22:25:27.521Z' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/wireless_PrivateWirelessGateway' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' post: x-latency-category: background summary: Create a Private Wireless Gateway description: Asynchronously create a Private Wireless Gateway for SIM cards for a previously created network. This operation may take several minutes so you can check the Private Wireless Gateway status at the section Get a Private Wireless Gateway. operationId: CreatePrivateWirelessGateway tags: - Private Wireless Gateways requestBody: required: true content: application/json: schema: type: object properties: network_id: description: The identification of the related network resource. format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 name: description: The private wireless gateway name. type: string example: My private wireless gateway region_code: description: The code of the region where the private wireless gateway will be assigned. A list of available regions can be found at the regions endpoint type: string example: dc2 address_mode: description: Determines how IP addresses are assigned to SIM cards using this gateway. With static, each SIM card gets a fixed IP address from the gateway's IP range that is preserved across sessions. With dynamic, an IP address is assigned by the network at attach time and may change between sessions. If omitted, the gateway is created with the default address mode, dynamic. type: string enum: - static - dynamic default: dynamic example: static required: - network_id - name responses: '202': description: Creation request accepted. Provisioning is asynchronous; poll GET /private_wireless_gateways/{id} with the returned id to check status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_PrivateWirelessGateway' example: data: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 network_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: private_wireless_gateway created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' name: My private wireless gateway address_mode: dynamic region_code: dc2 status: value: provisioning error_description: null error_code: null ip_range: 100.64.1.0/24 assigned_resources: - record_type: sim_card_group count: 1 '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /private_wireless_gateways/{id}: delete: summary: Delete a Private Wireless Gateway description: Permanently deletes the specified Private Wireless Gateway from your account. operationId: DeleteWirelessGateway tags: - Private Wireless Gateways parameters: - $ref: '#/components/parameters/PrivateWirelessGatewayId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_PrivateWirelessGateway' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' get: summary: Get a Private Wireless Gateway description: Retrieve information about a Private Wireless Gateway. operationId: GetPrivateWirelessGateway tags: - Private Wireless Gateways parameters: - $ref: '#/components/parameters/PrivateWirelessGatewayId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_PrivateWirelessGateway' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /pronunciation_dicts: get: summary: List pronunciation dictionaries description: List all pronunciation dictionaries for the authenticated organization. Results are paginated using offset-based pagination. operationId: ListPronunciationDicts tags: - Pronunciation Dictionaries parameters: - name: page[number] in: query required: false description: Page number (1-based). Defaults to 1. schema: type: integer minimum: 1 default: 1 - name: page[size] in: query required: false description: Number of results per page. Defaults to 20, maximum 250. schema: type: integer minimum: 1 maximum: 250 default: 20 responses: '200': description: A paginated list of pronunciation dictionaries. content: application/json: schema: $ref: '#/components/schemas/PronunciationDictListResponse' '400': description: Invalid pagination parameters. content: application/json: schema: $ref: '#/components/schemas/pronunciation-dicts_ErrorResponse' '401': description: Unauthorized. Invalid or missing API key. post: summary: Create a pronunciation dictionary description: 'Create a new pronunciation dictionary for the authenticated organization. Each dictionary contains a list of items that control how specific words are spoken. Items can be alias type (text replacement) or phoneme type (IPA pronunciation notation). As an alternative to providing items directly as JSON, you can upload a dictionary file (PLS/XML or plain text format, max 1MB) using multipart/form-data. PLS files use the standard W3C Pronunciation Lexicon Specification XML format. Text files use a line-based format: `word=alias` for aliases, `word:/phoneme/` for IPA phonemes. Limits: - Maximum 50 dictionaries per organization - Maximum 100 items per dictionary - Text: max 200 characters - Alias/phoneme value: max 500 characters - File upload: max 1MB (1,048,576 bytes)' operationId: CreatePronunciationDict tags: - Pronunciation Dictionaries requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePronunciationDictRequest' multipart/form-data: schema: type: object required: - name - file properties: name: type: string description: Human-readable name. Must be unique within the organization. minLength: 1 maxLength: 255 example: Brand Names file: type: string format: binary description: 'Dictionary file to upload. Supported formats: PLS/XML (.pls, .xml) and plain text (.txt). Max size: 1MB (1,048,576 bytes).' responses: '201': description: Pronunciation dictionary created successfully. content: application/json: schema: $ref: '#/components/schemas/PronunciationDictResponse' '401': description: Unauthorized. Invalid or missing API key. '422': description: Validation error or organization limit exceeded. content: application/json: schema: $ref: '#/components/schemas/pronunciation-dicts_ErrorResponse' examples: validation_error: summary: Validation failed value: errors: - code: '90202' title: Validation failed detail: items must have at least one item source: pointer: /items limit_exceeded: summary: Organization limit exceeded value: errors: - code: '90203' title: Limit exceeded detail: Maximum number of pronunciation dictionaries (50) reached source: pointer: / duplicate_name: summary: Duplicate dictionary name value: errors: - code: '90202' title: Validation failed detail: organization_id, name a dictionary with this name already exists source: pointer: /organization_id, name /pronunciation_dicts/{id}: delete: summary: Delete a pronunciation dictionary description: Permanently delete a pronunciation dictionary. operationId: DeletePronunciationDict tags: - Pronunciation Dictionaries parameters: - $ref: '#/components/parameters/pronunciation_dict_id' responses: '204': description: Dictionary deleted successfully. No content returned. '401': description: Unauthorized. Invalid or missing API key. '404': description: Pronunciation dictionary not found. content: application/json: schema: $ref: '#/components/schemas/pronunciation-dicts_ErrorResponse' get: summary: Get a pronunciation dictionary description: Retrieve a single pronunciation dictionary by ID. operationId: GetPronunciationDict tags: - Pronunciation Dictionaries parameters: - $ref: '#/components/parameters/pronunciation_dict_id' responses: '200': description: The requested pronunciation dictionary. content: application/json: schema: $ref: '#/components/schemas/PronunciationDictResponse' '401': description: Unauthorized. Invalid or missing API key. '404': description: Pronunciation dictionary not found. content: application/json: schema: $ref: '#/components/schemas/pronunciation-dicts_ErrorResponse' example: errors: - code: '90201' title: Pronunciation dictionary not found detail: The requested pronunciation dictionary does not exist patch: summary: Update a pronunciation dictionary description: Update the name and/or items of an existing pronunciation dictionary. Uses optimistic locking — if the dictionary was modified concurrently, the request returns 409 Conflict. operationId: UpdatePronunciationDict tags: - Pronunciation Dictionaries parameters: - $ref: '#/components/parameters/pronunciation_dict_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePronunciationDictRequest' responses: '200': description: Pronunciation dictionary updated successfully. content: application/json: schema: $ref: '#/components/schemas/PronunciationDictResponse' '401': description: Unauthorized. Invalid or missing API key. '404': description: Pronunciation dictionary not found. content: application/json: schema: $ref: '#/components/schemas/pronunciation-dicts_ErrorResponse' '409': description: Conflict. The dictionary was modified concurrently. Re-fetch and retry. content: application/json: schema: $ref: '#/components/schemas/pronunciation-dicts_ErrorResponse' example: errors: - code: '90200' title: Pronunciation dictionary error detail: Dictionary was modified concurrently, please retry '422': description: Validation error. content: application/json: schema: $ref: '#/components/schemas/pronunciation-dicts_ErrorResponse' /public_internet_gateways: get: summary: List all Public Internet Gateways description: Returns a paginated list of the public internet gateways on your account, with support for filtering. operationId: ListPublicInternetGateways tags: - Public Internet Gateways parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[network_id]' schema: type: object properties: network_id: type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 description: The associated network id to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/PublicInternetGatewayRead' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a Public Internet Gateway description: Requests creation of a public internet gateway on the specified network, giving the network internet egress. Creation is asynchronous, so the request is accepted and completes in the background. operationId: CreatePublicInternetGateway tags: - Public Internet Gateways requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicInternetGatewayCreate' required: true responses: '202': description: Creation request accepted. Provisioning is asynchronous; poll GET /public_internet_gateways/{id} with the returned id to check status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicInternetGatewayRead' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /public_internet_gateways/{id}: delete: summary: Delete a Public Internet Gateway description: Deletes the specified public internet gateway, removing internet egress through it. operationId: DeletePublicInternetGateway tags: - Public Internet Gateways parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicInternetGatewayRead' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve a Public Internet Gateway description: Returns the details of a single public internet gateway by its identifier. operationId: GetPublicInternetGateway tags: - Public Internet Gateways parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PublicInternetGatewayRead' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /queues: get: summary: List queues description: List all queues for the authenticated user. operationId: ListQueues tags: - Queue Commands parameters: - name: page[number] in: query description: The page number to load required: false schema: type: integer minimum: 1 default: 1 - name: page[size] in: query description: The size of the page required: false schema: type: integer minimum: 1 maximum: 250 default: 20 responses: '200': description: Successful response with a list of queues. content: application/json: schema: type: object title: List Queues Response properties: data: type: array items: $ref: '#/components/schemas/Queue' meta: $ref: '#/components/schemas/PaginationMeta' '401': $ref: '#/components/responses/UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' post: summary: Create a queue description: Creates a new call queue with the provided configuration and returns the created queue. operationId: CreateQueue tags: - Queue Commands requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateQueueRequest' responses: '200': description: Successful response with details about a queue. content: application/json: schema: type: object title: Queue Response properties: data: $ref: '#/components/schemas/Queue' '401': $ref: '#/components/responses/UnauthorizedResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /queues/{queue_name}: delete: summary: Delete a queue description: Permanently deletes the specified call queue from your account. operationId: DeleteQueue tags: - Queue Commands parameters: - name: queue_name description: Uniquely identifies the queue by name in: path required: true schema: type: string responses: '204': description: Queue deleted successfully. '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' get: summary: Retrieve a call queue description: Returns the details of an existing call queue, including its current configuration. operationId: RetrieveCallQueue tags: - Queue Commands parameters: - name: queue_name description: Uniquely identifies the queue by name in: path required: true schema: type: string responses: '200': description: Successful response with details about a queue. content: application/json: schema: type: object title: Queue Response properties: data: $ref: '#/components/schemas/Queue' '404': $ref: '#/components/responses/NotFoundResponse' post: summary: Update a queue description: Update properties of an existing call queue. operationId: UpdateQueue tags: - Queue Commands parameters: - name: queue_name description: Uniquely identifies the queue by name in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateQueueRequest' responses: '200': description: Successful response with details about a queue. content: application/json: schema: type: object title: Queue Response properties: data: $ref: '#/components/schemas/Queue' '401': $ref: '#/components/responses/UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' /queues/{queue_name}/calls: get: summary: Retrieve calls from a queue description: Retrieve the list of calls in an existing queue operationId: ListQueueCalls tags: - Queue Commands parameters: - name: queue_name description: Uniquely identifies the queue by name in: path required: true schema: type: string - $ref: '#/components/parameters/call-control_PageConsolidated' responses: '200': description: Successful response with a list of calls in a queue. content: application/json: schema: type: object title: List Queue Calls Response properties: data: type: array items: $ref: '#/components/schemas/QueueCall' meta: $ref: '#/components/schemas/PaginationMeta' '404': $ref: '#/components/responses/NotFoundResponse' /queues/{queue_name}/calls/{call_control_id}: delete: summary: Force remove a call from a queue description: Removes an inactive call from a queue. If the call is no longer active, use this command to remove it from the queue. operationId: RemoveQueueCall tags: - Queue Commands parameters: - name: queue_name description: Uniquely identifies the queue by name in: path required: true schema: type: string - $ref: '#/components/parameters/CallControlId' responses: '204': description: Call successfully removed from the queue '404': $ref: '#/components/responses/NotFoundResponse' get: summary: Retrieve a call from a queue description: Retrieve an existing call from an existing queue operationId: RetrieveCallFromQueue tags: - Queue Commands parameters: - name: queue_name description: Uniquely identifies the queue by name in: path required: true schema: type: string - $ref: '#/components/parameters/CallControlId' responses: '200': description: Successful response with details about a call in a queue. content: application/json: schema: type: object title: Queue Call Response properties: data: $ref: '#/components/schemas/QueueCall' '404': $ref: '#/components/responses/NotFoundResponse' patch: summary: Update queued call description: Update queued call's keep_after_hangup flag operationId: UpdateCallInQueue tags: - Queue Commands parameters: - name: queue_name description: Uniquely identifies the queue by name in: path required: true schema: type: string - $ref: '#/components/parameters/CallControlId' requestBody: description: Update queued call request. required: true content: application/json: schema: $ref: '#/components/schemas/UpdateQueuedCallRequest' responses: '204': description: Call has been successfully updated. '404': $ref: '#/components/responses/NotFoundResponse' /rcs/agents: get: tags: - RCS Agents summary: List RCS agents description: Lists RCS agents owned by the authenticated organization, optionally filtered by brand. operationId: ListRcsAgents parameters: - name: brand_id in: query required: false description: Only return agents belonging to this brand. schema: type: string format: uuid responses: '200': description: RCS agents owned by the organization. content: application/json: schema: type: array items: $ref: '#/components/schemas/AgentResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '422': $ref: '#/components/responses/ValidationError' post: tags: - RCS Agents summary: Create an RCS agent description: Creates an editable RCS agent draft under a brand. The `Idempotency-Key` is scoped to the authenticated organization. Reusing the key with the same request returns the original agent, while reusing it with a different request returns a conflict. operationId: CreateRcsAgent parameters: - $ref: '#/components/parameters/rcs-registration_IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AgentCreateRequest' responses: '201': description: The agent draft was created or replayed from the idempotency record. headers: Idempotent-Replayed: description: Present with value `true` when a successful response was replayed for the supplied idempotency key. schema: type: boolean content: application/json: schema: $ref: '#/components/schemas/AgentResponse' '400': $ref: '#/components/responses/rcs-registration_BadRequest' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '409': $ref: '#/components/responses/rcs-registration_Conflict' '422': $ref: '#/components/responses/ValidationError' '503': $ref: '#/components/responses/DependencyUnavailable' /rcs/agents/{id}: get: tags: - RCS Agents summary: Retrieve an RCS agent description: Retrieves an RCS agent, section statuses, test devices, carrier approvals, and provider capabilities. operationId: RetrieveRcsAgent parameters: - $ref: '#/components/parameters/AgentId' responses: '200': description: The requested RCS agent. content: application/json: schema: $ref: '#/components/schemas/AgentResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' patch: tags: - RCS Agents summary: Update an RCS agent description: Updates one or more fields on an agent while its status is `CREATED`. Submitted agents cannot be changed through this endpoint. operationId: UpdateRcsAgent parameters: - $ref: '#/components/parameters/AgentId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AgentUpdateRequest' responses: '200': description: The updated RCS agent. content: application/json: schema: $ref: '#/components/schemas/AgentResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '409': $ref: '#/components/responses/rcs-registration_Conflict' '422': $ref: '#/components/responses/ValidationError' '503': $ref: '#/components/responses/DependencyUnavailable' /rcs/agents/{id}/carrier_approvals: get: tags: - RCS Agents summary: List RCS agent carrier approvals description: Lists carrier approval records for an RCS agent. The provider may expose per-carrier, hub-level, or bot-level approval status. operationId: ListRcsAgentCarrierApprovals parameters: - $ref: '#/components/parameters/AgentId' responses: '200': description: Carrier approval records for the agent. content: application/json: schema: type: array items: $ref: '#/components/schemas/CarrierApprovalResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' /rcs/agents/{id}/launch: post: tags: - RCS Agents summary: Submit an RCS agent for launch description: Adds the campaign and testing configuration, then starts asynchronous carrier launch. Agent basics must already be submitted. Repeating a launch that is already in progress returns the current agent without creating new work. operationId: LaunchRcsAgent parameters: - $ref: '#/components/parameters/AgentId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AgentLaunchRequest' responses: '202': description: The launch submission was accepted. content: application/json: schema: $ref: '#/components/schemas/AgentResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '409': $ref: '#/components/responses/rcs-registration_Conflict' '422': $ref: '#/components/responses/ValidationError' /rcs/agents/{id}/submit: post: tags: - RCS Agents summary: Submit RCS agent basics description: Starts asynchronous provider provisioning and submits the agent's basic configuration. The brand must be `VERIFIED`. Repeating this request for an in-progress agent returns its current state without creating new work. operationId: SubmitRcsAgent parameters: - $ref: '#/components/parameters/AgentId' responses: '202': description: The basic agent submission was accepted. content: application/json: schema: $ref: '#/components/schemas/AgentResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '409': $ref: '#/components/responses/rcs-registration_Conflict' /rcs/agents/{id}/test_devices: get: tags: - RCS Agents summary: List RCS agent test devices description: Lists test devices attached to an RCS agent. operationId: ListRcsAgentTestDevices parameters: - $ref: '#/components/parameters/AgentId' responses: '200': description: Test devices attached to the agent. content: application/json: schema: type: array items: $ref: '#/components/schemas/TestDeviceResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' post: tags: - RCS Agents summary: Add an RCS agent test device description: Adds an RCS-capable test number after provider agent creation. Repeating the request for a number already attached to the agent returns the existing test device. operationId: AddRcsAgentTestDevice parameters: - $ref: '#/components/parameters/AgentId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TestDeviceCreateRequest' responses: '201': description: The test device was added or already existed. content: application/json: schema: $ref: '#/components/schemas/TestDeviceResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '409': $ref: '#/components/responses/rcs-registration_Conflict' '422': $ref: '#/components/responses/ValidationError' '502': $ref: '#/components/responses/ProviderError' /rcs/agents/{id}/test_devices/{test_device_id}: delete: tags: - RCS Agents summary: Remove an RCS agent test device description: Removes a test device from an RCS agent and its provider registration. operationId: RemoveRcsAgentTestDevice parameters: - $ref: '#/components/parameters/AgentId' - $ref: '#/components/parameters/TestDeviceId' responses: '204': description: The test device was removed. '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '502': $ref: '#/components/responses/ProviderError' /rcs/brands: get: tags: - RCS Brands summary: List RCS brands description: Lists RCS brands owned by the authenticated organization. operationId: ListRcsBrands responses: '200': description: RCS brands owned by the organization. content: application/json: schema: type: array items: $ref: '#/components/schemas/BrandResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' post: tags: - RCS Brands summary: Create an RCS brand description: Creates an editable RCS brand draft. Creating the draft does not begin external review. operationId: CreateRcsBrand requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BrandCreateRequest' responses: '201': description: The brand draft was created. content: application/json: schema: $ref: '#/components/schemas/BrandResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '409': $ref: '#/components/responses/rcs-registration_Conflict' '422': $ref: '#/components/responses/ValidationError' '503': $ref: '#/components/responses/DependencyUnavailable' /rcs/brands/{id}: get: tags: - RCS Brands summary: Retrieve an RCS brand description: Retrieves an RCS brand and its current lifecycle status. operationId: RetrieveRcsBrand parameters: - $ref: '#/components/parameters/BrandId' responses: '200': description: The requested RCS brand. content: application/json: schema: $ref: '#/components/schemas/BrandResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' patch: tags: - RCS Brands summary: Update an RCS brand description: Updates one or more fields on a brand while its status is `CREATED`. Submitted brands cannot be changed. operationId: UpdateRcsBrand parameters: - $ref: '#/components/parameters/BrandId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BrandUpdateRequest' responses: '200': description: The updated RCS brand. content: application/json: schema: $ref: '#/components/schemas/BrandResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '409': $ref: '#/components/responses/rcs-registration_Conflict' '422': $ref: '#/components/responses/ValidationError' '503': $ref: '#/components/responses/DependencyUnavailable' /rcs/brands/{id}/submit: post: tags: - RCS Brands summary: Submit an RCS brand description: Starts asynchronous provider provisioning and external review for a brand. Repeating this request for an in-progress brand returns its current state without creating new work. operationId: SubmitRcsBrand parameters: - $ref: '#/components/parameters/BrandId' responses: '202': description: The brand submission was accepted. content: application/json: schema: $ref: '#/components/schemas/BrandResponse' '401': $ref: '#/components/responses/rcs-registration_Unauthorized' '404': $ref: '#/components/responses/rcs-registration_NotFound' '409': $ref: '#/components/responses/rcs-registration_Conflict' /recording_transcriptions: get: summary: List all recording transcriptions description: Returns a list of your recording transcriptions. operationId: getRecordingTranscriptions tags: - Call Recordings parameters: - $ref: '#/components/parameters/call-recordings_PageConsolidated' - name: filter in: query style: deepObject explode: true description: Filter recording transcriptions by various attributes. schema: type: object properties: recording_id: type: string format: uuid example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: If present, transcriptions will be filtered to those associated with the given recording. created_at: type: object additionalProperties: false properties: gte: type: string example: '2019-03-29T11:10:00Z' description: Returns only transcriptions created later than or at given ISO 8601 datetime. lte: type: string example: '2019-03-29T11:10:00Z' description: Returns only transcriptions created earlier than or at given ISO 8601 datetime. responses: '200': description: A response listing multiple recording transcriptions. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RecordingTranscription' meta: $ref: '#/components/schemas/call-recordings_CursorPaginationMeta' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' /recording_transcriptions/{recording_transcription_id}: delete: summary: Delete a recording transcription description: Permanently deletes a recording transcription. operationId: deleteRecordingTranscription tags: - Call Recordings parameters: - $ref: '#/components/parameters/RecordingTranscriptionId' responses: '200': description: A response with a single recording transcription resource. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/RecordingTranscription' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' get: summary: Retrieve a recording transcription description: Retrieves the details of an existing recording transcription. operationId: getRecordingTranscription tags: - Call Recordings parameters: - $ref: '#/components/parameters/RecordingTranscriptionId' responses: '200': description: A response with a single recording transcription resource. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/RecordingTranscription' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' /recordings: get: summary: List all call recordings description: Returns a paginated list of your call recordings, with support for filtering to locate specific recordings. operationId: GetRecordings tags: - Call Recordings parameters: - $ref: '#/components/parameters/call-recordings_PageConsolidated' - name: filter in: query style: deepObject explode: true description: Filter recordings by various attributes. schema: type: object properties: conference_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: Returns only recordings associated with a given conference. created_at: type: object additionalProperties: false properties: gte: type: string example: '2019-03-29T11:10:00Z' description: Returns only recordings created later than or at given ISO 8601 datetime. lte: type: string example: '2019-03-29T11:10:00Z' description: Returns only recordings created earlier than or at given ISO 8601 datetime. call_leg_id: type: string format: uuid example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: If present, recordings will be filtered to those with a matching call_leg_id. call_session_id: type: string format: uuid example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: If present, recordings will be filtered to those with a matching call_session_id. from: type: string example: '1234567890' description: If present, recordings will be filtered to those with a matching `from` attribute (case-sensitive). to: type: string example: '1234567890' description: If present, recordings will be filtered to those with a matching `to` attribute (case-sensitive). connection_id: type: string example: '175237942907135762' description: If present, recordings will be filtered to those with a matching `connection_id` attribute (case-sensitive). sip_call_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: If present, recordings will be filtered to those with a matching `sip_call_id` attribute. Matching is case-sensitive. call_control_id: type: string example: v3:e-31OnvjEM7Y4wvxr3TKNk8M3QyLcGZPiUIzCGtwQtOtEjY-B0urkw description: If present, recordings will be filtered to those with a matching `call_control_id`. conference_region: type: string example: us description: If present, recordings will be filtered to those with a matching `conference_region`. start_time: type: object additionalProperties: false properties: gte: type: string example: '2019-03-29T11:10:00Z' description: Returns only recordings with a start time later than or equal to the given ISO 8601 datetime. lte: type: string example: '2019-03-29T11:10:00Z' description: Returns only recordings with a start time earlier than or equal to the given ISO 8601 datetime. end_time: type: object additionalProperties: false properties: gte: type: string example: '2019-03-29T11:10:00Z' description: Returns only recordings with an end time later than or equal to the given ISO 8601 datetime. lte: type: string example: '2019-03-29T11:10:00Z' description: Returns only recordings with an end time earlier than or equal to the given ISO 8601 datetime. responses: '200': description: A response containing multiple recordings. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RecordingResponseData' meta: $ref: '#/components/schemas/PaginationMeta' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' '403': $ref: '#/components/responses/ForbiddenResponse' '500': $ref: '#/components/responses/call-recordings_InternalServerErrorResponse' /recordings/actions/delete: post: summary: Delete a list of call recordings description: Permanently deletes a list of call recordings. operationId: DeleteRecordings tags: - Call Recordings requestBody: $ref: '#/components/requestBodies/DeleteRecordingsRequest' responses: '200': description: The recordings have been successfully deleted. content: application/json: schema: type: object properties: status: type: string enum: - ok example: ok default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' /recordings/{recording_id}: delete: summary: Delete a call recording description: Permanently deletes the specified call recording and returns the deleted recording resource. The media is removed and can no longer be downloaded. operationId: DeleteRecording tags: - Call Recordings parameters: - $ref: '#/components/parameters/RecordingId' responses: '200': description: A response with a single recording resource. content: application/json: schema: $ref: '#/components/schemas/RecordingResponse' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' get: summary: Retrieve a call recording description: Retrieves the details of an existing call recording. operationId: GetRecording tags: - Call Recordings parameters: - $ref: '#/components/parameters/RecordingId' responses: '200': description: A response with a single recording resource. content: application/json: schema: $ref: '#/components/schemas/RecordingResponse' default: $ref: '#/components/responses/call-recordings_GenericErrorResponse' '401': $ref: '#/components/responses/call-recordings_UnauthorizedResponse' '404': $ref: '#/components/responses/call-recordings_NotFoundResponse' /regions: get: summary: List all Regions description: List all regions and the interfaces that region supports operationId: ListRegions tags: - Regions responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/netapps_Region_17904fcfbc' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /regulatory_requirements: get: summary: Retrieve regulatory requirements operationId: ListRegulatoryRequirements tags: - Regulatory Requirements parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[requirement_group_id], filter[country_code], filter[phone_number_type], filter[action]' schema: type: object properties: phone_number: type: string example: '+41215470622' description: Phone number to check requirements for requirement_group_id: type: string example: d4c0b4a6-7bd2-40c5-a3b9-2acd99e212b2 description: ID of requirement group to check requirements for country_code: type: string example: DE description: Country code(iso2) to check requirements for phone_number_type: type: string enum: - local - toll_free - mobile - national - shared_cost description: Phone number type to check requirements for action: type: string enum: - ordering - porting - action description: Action to check requirements for responses: '200': description: An array of Regulatory Requirements Responses content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RegulatoryRequirements' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns regulatory requirements for number ordering, porting, or other supported actions. Results can be filtered by phone number, requirement group, country, number type, and action. /reports/cdr_usage_reports/sync: get: tags: - CDR Usage Reports description: 'Generate and fetch voice usage report synchronously. This endpoint will both generate and fetch the voice report over a specified time period. No polling is necessary but the response may take up to a couple of minutes. ' summary: Generates and fetches CDR Usage Reports operationId: GetCDRUsageReportSync parameters: - name: start_date in: query description: Start of the date range filter (inclusive, ISO 8601). schema: type: string format: date-time example: '2020-07-01T00:00:00-06:00' - name: end_date in: query description: End of the date range filter (inclusive, ISO 8601). schema: type: string format: date-time example: '2020-07-01T00:00:00-06:00' - name: aggregation_type in: query description: Type of aggregation to apply to the results. required: true schema: type: string example: NO_AGGREGATION enum: - NO_AGGREGATION - CONNECTION - TAG - BILLING_GROUP - name: product_breakdown in: query description: Filter results by product breakdown. required: true schema: type: string example: NO_BREAKDOWN enum: - NO_BREAKDOWN - DID_VS_TOLL_FREE - COUNTRY - DID_VS_TOLL_FREE_PER_COUNTRY - name: connections in: query description: Filter results by connection. schema: type: array example: - 1234567890123 items: type: number example: 1234567890123 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/CdrGetSyncUsageReportResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17' x-latency-category: background /reports/mdr_usage_reports: get: tags: - MDR Usage Reports description: Fetch all messaging usage reports. Usage reports are aggregated messaging data for specified time period and breakdown summary: Fetch all Messaging usage reports operationId: GetMdrUsageReports parameters: - name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]' schema: type: object properties: number: type: integer format: int32 default: 1 description: Page number size: type: integer format: int32 default: 20 description: Size of the page examples: page[number]=1&page[size]=20: value: number: 1 size: 20 summary: Default pagination with first page and 20 records per page page[number]=2&page[size]=20: value: number: 2 size: 20 summary: Second page with 20 records per page page[number]=1&page[size]=50: value: number: 1 size: 50 summary: First page with 50 records per page page[number]=5&page[size]=100: value: number: 5 size: 100 summary: Fifth page with 100 records per page responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/reporting_MdrGetUsageReportsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17' x-latency-category: interactive post: tags: - MDR Usage Reports description: 'Submit request for new new messaging usage report. This endpoint will pull and aggregate messaging data in specified time period. ' summary: Create MDR Usage Report operationId: SubmitUsageReport requestBody: description: Mdr usage report data content: '*/*': schema: $ref: '#/components/schemas/MdrPostUsageReportRequest' required: true responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/MdrPostUsageReportsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17' x-latency-category: background /reports/mdr_usage_reports/sync: get: tags: - MDR Usage Reports description: 'Generate and fetch messaging usage report synchronously. This endpoint will both generate and fetch the messaging report over a specified time period. No polling is necessary but the response may take up to a couple of minutes. ' summary: Generate and fetch MDR Usage Report operationId: GetMDRUsageReportSync parameters: - name: start_date in: query description: Start of the date range filter (inclusive, ISO 8601). schema: type: string format: date-time example: '2020-07-01T00:00:00-06:00' - name: end_date in: query description: End of the date range filter (inclusive, ISO 8601). schema: type: string format: date-time example: '2020-07-01T00:00:00-06:00' - name: aggregation_type in: query description: Type of aggregation to apply to the results. required: true schema: type: string example: PROFILE enum: - NO_AGGREGATION - PROFILE - TAGS - name: profiles in: query description: Filter results by profile. schema: type: array example: - My profile items: type: string example: My profile responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/MdrGetSyncUsageReportResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17' x-latency-category: background /reports/mdr_usage_reports/{id}: delete: tags: - MDR Usage Reports description: Permanently deletes the specified messaging usage report by its identifier. summary: Delete MDR Usage Report operationId: DeleteUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/MdrDeleteUsageReportsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17' x-latency-category: interactive get: tags: - MDR Usage Reports description: Fetch a single messaging usage report by id summary: Retrieve messaging report operationId: GetUsageReport parameters: - name: id in: path description: Unique identifier of the resource. required: true schema: type: string format: uuid responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/MdrGetUsageReportsByIdResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17' x-latency-category: interactive /reports/mdrs: get: tags: - MDR Detail Reports description: Returns message detail records (MDRs) matching the provided criteria, such as date range, direction, status, and message type. summary: Fetch all Mdr records operationId: GetPaginatedMdrs parameters: - name: start_date in: query description: Pagination start date schema: type: string - name: end_date in: query description: Pagination end date schema: type: string - name: id in: query description: Filter results by identifier. schema: type: string description: Message uuid example: e093fbe0-5bde-11eb-ae93-0242ac130002 - name: direction in: query description: Filter results by direction. schema: type: string description: Direction (inbound or outbound) example: INBOUND enum: - INBOUND - OUTBOUND - name: profile in: query description: Filter results by profile. schema: type: string description: Name of the profile example: My profile - name: cld in: query description: Filter results by cld. schema: type: string description: Destination number example: '+15551237654' - name: cli in: query description: Filter results by cli. schema: type: string description: Origination number example: '+15551237654' - name: status in: query description: Filter results by status. schema: type: string description: Message status example: DELIVERED enum: - GW_TIMEOUT - DELIVERED - DLR_UNCONFIRMED - DLR_TIMEOUT - RECEIVED - GW_REJECT - FAILED - name: message_type in: query description: Filter results by message type. schema: type: string description: Type of message example: SMS enum: - SMS - MMS responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/reporting_MdrGetDetailResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17' x-latency-category: interactive /reports/wdrs: get: tags: - WDR Detail Reports description: Returns wireless detail records (WDRs) matching the provided criteria, such as date range, SIM card, IMSI, or phone number, with pagination and sorting. summary: Fetches all Wdr records operationId: GetPaginatedWdrs parameters: - name: start_date in: query description: Start date schema: type: string example: '2021-05-01T00:00:00Z' - name: end_date in: query description: End date schema: type: string example: '2021-06-01T00:00:00Z' - name: id in: query description: Filter results by identifier. schema: type: string description: WDR uuid example: e093fbe0-5bde-11eb-ae93-0242ac130002 - name: mcc in: query description: Filter results by mcc. schema: type: string description: Mobile country code example: '204' - name: mnc in: query description: Filter results by mnc. schema: type: string description: Mobile network code example: '01' - name: imsi in: query description: Filter results by imsi. schema: type: string description: International mobile subscriber identity example: '123456' - name: sim_group_name in: query description: Filter results by sim group name. schema: type: string description: Sim group name example: sim name - name: sim_group_id in: query description: Filter results by sim group id. schema: type: string description: Sim group unique identifier example: f05a189f-7c46-4531-ac56-1460dc465a42 - name: sim_card_id in: query description: Filter results by sim card id. schema: type: string description: Sim card unique identifier example: 877f80a6-e5b2-4687-9a04-88076265720f - name: phone_number in: query description: Filter results by phone number. schema: type: string description: Phone number example: '+12345678910' - name: sort in: query description: Field and direction to sort the results by. schema: type: array items: type: string description: Field used to order the data. If no field is specified, default value is 'created_at' example: - created_at default: - created_at - name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]' schema: type: object properties: number: type: integer format: int32 default: 1 description: Page number size: type: integer format: int32 default: 20 description: Size of the page responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/wireless-public_ExternalWdrGetDetailResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/wireless-public_ErrorResponse_ea8f2ad863' x-latency-category: interactive /reputation/numbers: get: summary: List reputation-monitored phone numbers across all enterprises description: Convenience alias for `GET /v2/enterprises/{enterprise_id}/reputation/numbers` that returns numbers across every enterprise you own. Useful when you don't want to look up the enterprise id first. operationId: listReputationNumbersSimplified tags: - Reputation parameters: - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' - name: filter[phone_number][contains] in: query required: false description: Partial match on phone number. Must contain at least 5 digits. schema: type: string example: '+16035551234' - name: filter[enterprise_id] in: query required: false description: Filter by enterprise ID. schema: type: string format: uuid - name: filter[phone_number][eq] in: query required: false description: Exact phone-number match (E.164). schema: type: string example: '+16035551234' - name: filter[source] in: query required: false description: Only numbers with this source. schema: $ref: '#/components/schemas/ReputationNumberSource' - name: filter[ownership_status] in: query required: false description: Only numbers with this ownership status. `removed` lists the numbers that were removed, each with its `removal_reason` and `removed_at`; removed numbers are not returned otherwise. schema: $ref: '#/components/schemas/ReputationOwnershipStatus' responses: '200': description: Paginated list. content: application/json: schema: $ref: '#/components/schemas/ReputationPhoneNumberListWithReputation' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /reputation/numbers/{phone_number}: delete: summary: Remove a phone number from reputation monitoring (no enterprise_id required) description: Convenience alias for `DELETE /v2/enterprises/{enterprise_id}/reputation/numbers/{phone_number}`. operationId: disassociateReputationNumberSimplified tags: - Reputation parameters: - $ref: '#/components/parameters/PhoneNumberPath' responses: '204': description: 204 (no body) '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' get: summary: Get a reputation-monitored number (no enterprise_id required) description: Convenience alias for `GET /v2/enterprises/{enterprise_id}/reputation/numbers/{phone_number}`. operationId: getPhoneNumberReputationSimplified tags: - Reputation parameters: - $ref: '#/components/parameters/PhoneNumberPath' - name: fresh in: query description: When true, fetches fresh reputation data (incurs API cost). When false (default), returns cached data. required: false schema: type: boolean default: false responses: '200': description: Phone number with reputation data. content: application/json: schema: $ref: '#/components/schemas/ReputationPhoneNumberWithReputation' '401': $ref: '#/components/responses/number-reputation_GenericErrorResponse' '404': $ref: '#/components/responses/number-reputation_GenericErrorResponse' /requirement_groups: get: summary: List requirement groups operationId: GetRequirementGroups tags: - Requirement Groups parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[country_code], filter[phone_number_type], filter[action], filter[status], filter[customer_reference]' schema: type: object properties: country_code: type: string description: Filter requirement groups by country code (iso alpha 2) phone_number_type: type: string enum: - local - toll_free - mobile - national - shared_cost description: Filter requirement groups by phone number type. action: type: string enum: - ordering - porting - action description: Filter requirement groups by action type status: type: string enum: - approved - unapproved - pending-approval - declined - expired description: Filter requirement groups by status customer_reference: type: string description: Filter requirement groups by customer reference responses: '200': description: List requirement groups content: application/json: schema: type: array items: $ref: '#/components/schemas/RequirementGroup' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns regulatory requirement groups for the account. Results can be filtered by country, number type, action, approval status, and customer reference. post: summary: Create a new requirement group operationId: CreateRequirementGroup tags: - Requirement Groups requestBody: required: true content: application/json: schema: type: object properties: country_code: type: string description: ISO alpha 2 country code example: US phone_number_type: type: string enum: - local - toll_free - mobile - national - shared_cost example: local action: type: string enum: - ordering - porting example: ordering customer_reference: type: string example: My Requirement Group regulatory_requirements: type: array items: type: object properties: requirement_id: type: string field_value: type: string required: - country_code - phone_number_type - action responses: '200': description: Requirement group created content: application/json: schema: $ref: '#/components/schemas/RequirementGroup' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Creates a regulatory requirement group for a country, number type, and ordering or porting action. Optional customer-reference and requirement values are retained on the created group. /requirement_groups/{id}: delete: summary: Delete a requirement group by ID operationId: DeleteRequirementGroup tags: - Requirement Groups parameters: - in: path name: id schema: type: string required: true description: ID of the requirement group responses: '200': description: Deleted requirement group content: application/json: schema: $ref: '#/components/schemas/RequirementGroup' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Deletes the regulatory requirement group identified by `id`. The response contains the deleted requirement-group representation. get: summary: Get a single requirement group by ID operationId: GetRequirementGroup tags: - Requirement Groups parameters: - in: path name: id schema: type: string required: true description: ID of the requirement group to retrieve responses: '200': description: A single requirement group content: application/json: schema: $ref: '#/components/schemas/RequirementGroup' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Returns the regulatory requirement group identified by `id`, including its requirement values and current approval status. patch: summary: Update requirement values in requirement group operationId: UpdateRequirementGroup tags: - Requirement Groups parameters: - in: path name: id schema: type: string required: true description: ID of the requirement group requestBody: required: true content: application/json: schema: type: object properties: customer_reference: type: string example: '0002' description: Reference for the customer regulatory_requirements: type: array items: type: object properties: requirement_id: type: string example: 53970723-fbff-4f46-a975-f62be6c1a585 description: Unique identifier for the regulatory requirement field_value: type: string example: new requirement value description: New value for the regulatory requirement responses: '200': description: Updated requirement group content: application/json: schema: $ref: '#/components/schemas/RequirementGroup' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Updates the customer reference or regulatory requirement values on the specified requirement group. The response contains the updated group. /requirement_groups/{id}/submit_for_approval: post: summary: Submit a Requirement Group for Approval operationId: SubmitRequirementGroup tags: - Requirement Groups parameters: - in: path name: id schema: type: string required: true description: ID of the requirement group to submit responses: '200': description: A single requirement group content: application/json: schema: $ref: '#/components/schemas/RequirementGroup' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Submits the specified regulatory requirement group for approval. The response contains the requirement group with its resulting approval status. /requirement_types: get: summary: List all requirement types description: List all requirement types ordered by created_at descending operationId: ListRequirementTypes x-latency-category: responsive tags: - Requirement Types parameters: - $ref: '#/components/parameters/FilterRequirementTypesConsolidated' - $ref: '#/components/parameters/SortRequirementTypesConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocReqsRequirementTypeList' meta: $ref: '#/components/schemas/PaginationMeta' '422': description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. default: $ref: '#/components/responses/documents_GenericErrorResponse' /requirement_types/{id}: get: summary: Retrieve a requirement types description: Returns the details of a single requirement type by its identifier, describing a kind of documentation needed for regulatory purposes. operationId: RetrieveRequirementType x-latency-category: responsive tags: - Requirement Types parameters: - $ref: '#/components/parameters/DocReqsRequirementTypeId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocReqsRequirementType' '422': description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. default: $ref: '#/components/responses/documents_GenericErrorResponse' /requirements: get: summary: List all requirements description: List all requirements with filtering, sorting, and pagination operationId: ListRequirements x-latency-category: responsive tags: - Requirements parameters: - $ref: '#/components/parameters/FilterRequirementsConsolidated' - $ref: '#/components/parameters/SortRequirementsConsolidated' - $ref: '#/components/parameters/documents_PageConsolidated' - $ref: '#/components/parameters/RequirementVersion' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocReqsRequirementList' meta: $ref: '#/components/schemas/PaginationMeta' '422': description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. default: $ref: '#/components/responses/documents_GenericErrorResponse' /requirements/{id}: get: summary: Retrieve a document requirement description: Returns a single document requirement record by its identifier, describing the documentation needed for number-related actions. A specific requirement version can be requested. operationId: RetrieveDocumentRequirements x-latency-category: responsive tags: - Requirements parameters: - $ref: '#/components/parameters/DocReqsRequirementId' - $ref: '#/components/parameters/RequirementVersion' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocReqsRequirement' '422': description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. default: $ref: '#/components/responses/documents_GenericErrorResponse' /requirements/{id}/versions: post: summary: Schedule a future requirement version description: Create a new pending version of a requirement with a future effective start date. Only one pending version may exist per requirement at a time. operationId: CreateRequirementVersion x-hidden: true x-latency-category: responsive tags: - Requirements parameters: - $ref: '#/components/parameters/DocReqsRequirementId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateRequirementVersionRequest' responses: '201': description: Pending version created successfully content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/DocReqsRequirement' '422': description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. default: $ref: '#/components/responses/documents_GenericErrorResponse' /requirements/{id}/versions/pending: delete: summary: Cancel a pending requirement version description: Cancel a pending requirement version. The pending version is marked as cancelled and the previously active version is restored with effective_end_at set to NULL. operationId: CancelPendingRequirementVersion x-hidden: true x-latency-category: responsive tags: - Requirements parameters: - $ref: '#/components/parameters/DocReqsRequirementId' responses: '200': description: Pending version cancelled successfully content: application/json: schema: $ref: '#/components/schemas/CancelPendingVersionResponse' '422': description: Unprocessable entity. The specified requirement is not a pending version. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. default: $ref: '#/components/responses/documents_GenericErrorResponse' /room_compositions: get: summary: View a list of room compositions. description: Returns a paginated list of room compositions. Filter compositions by creation date, room session, or processing status. operationId: ListRoomCompositions x-endpoint-cost: medium tags: - Room Compositions parameters: - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte], filter[date_created_at][lte], filter[session_id], filter[status]' schema: type: object properties: date_created_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room compositions created on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room compositions created on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room compositions created on or before that date. session_id: type: string format: uuid example: 92e7d459-bcc5-4386-9f5f-6dd14a82588d description: The session_id for filtering room compositions. status: type: string example: completed enum: - completed - processing - enqueued description: The status for filtering room compositions. - $ref: '#/components/parameters/video_PageConsolidated' responses: '200': description: List room compositions response. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RoomComposition' meta: $ref: '#/components/schemas/PaginationMeta' 4XX: $ref: '#/components/responses/video_GenericErrorResponse' post: summary: Create a room composition. description: Asynchronously create a room composition. operationId: CreateRoomComposition tags: - Room Compositions x-endpoint-cost: heavy requestBody: description: Parameters that can be defined during room composition creation. required: true content: application/json: schema: $ref: '#/components/schemas/CreateRoomCompositionRequest' responses: '202': description: Composition request accepted. Poll GET /room_compositions/{room_composition_id} with the returned id until the composition completes. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/RoomComposition' '422': $ref: '#/components/responses/video_UnprocessableEntity' /room_compositions/{room_composition_id}: delete: summary: Delete a room composition. description: Synchronously delete a room composition. operationId: DeleteRoomComposition tags: - Room Compositions x-endpoint-cost: medium parameters: - name: room_composition_id in: path description: The unique identifier of a room composition. required: true schema: type: string format: uuid example: 5219b3af-87c6-4c08-9b58-5a533d893e21 responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/video_ResourceNotFound' get: summary: View a room composition. operationId: ViewRoomComposition tags: - Room Compositions x-endpoint-cost: light parameters: - name: room_composition_id in: path description: The unique identifier of a room composition. required: true schema: type: string format: uuid example: 5219b3af-87c6-4c08-9b58-5a533d893e21 responses: '200': description: Get room composition response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/RoomComposition' '404': $ref: '#/components/responses/video_ResourceNotFound' description: Returns the composition identified by `room_composition_id`, including its room and session, processing status, media details, video layout, lifecycle timestamps, and download URL. /room_participants: get: summary: View a list of room participants. description: Returns a paginated list of room participants across sessions. Filter participants by session, join, update, or leave date and by participant context. operationId: ListRoomParticipants x-endpoint-cost: medium tags: - Room Participants parameters: - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_joined_at][eq], filter[date_joined_at][gte], filter[date_joined_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[date_left_at][eq], filter[date_left_at][gte], filter[date_left_at][lte], filter[context], filter[session_id]' schema: type: object properties: date_joined_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that joined on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that joined on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that joined on or before that date. date_updated_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants updated on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants updated on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants updated on or before that date. date_left_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that left on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that left on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that left on or before that date. context: type: string example: Alice description: Filter room participants based on the context. session_id: type: string example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Session_id for filtering room participants. - $ref: '#/components/parameters/video_PageConsolidated' responses: '200': description: List room participants response. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RoomParticipant' meta: $ref: '#/components/schemas/PaginationMeta' 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /room_participants/{room_participant_id}: get: summary: View a room participant. operationId: ViewRoomParticipant tags: - Room Participants x-endpoint-cost: light parameters: - name: room_participant_id in: path description: The unique identifier of a room participant. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 responses: '200': description: Get room participant response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/RoomParticipant' '404': $ref: '#/components/responses/video_ResourceNotFound' description: Returns the participant identified by `room_participant_id`, including its session, context, and join, update, and leave timestamps. /room_recordings: delete: summary: Delete several room recordings in a bulk. description: Deletes the room recordings that match the supplied filters and returns the number of recordings affected. Filters support room, session, participant, recording type, status, duration, and start or end dates. operationId: DeleteRoomRecordings x-endpoint-cost: heavy tags: - Room Recordings parameters: - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[date_started_at][eq], filter[date_started_at][gte], filter[date_started_at][lte], filter[room_id], filter[participant_id], filter[session_id], filter[status], filter[type], filter[duration_secs]' schema: type: object properties: date_ended_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings ended on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings ended on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings ended on or before that date. date_started_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings started on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings started on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings started on or before that date. room_id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: room_id for filtering room recordings. participant_id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: participant_id for filtering room recordings. session_id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: session_id for filtering room recordings. status: type: string example: completed description: status for filtering room recordings. type: type: string example: audio description: type for filtering room recordings. duration_secs: type: integer example: 20 description: duration_secs greater or equal for filtering room recordings. - $ref: '#/components/parameters/video_PageConsolidated' responses: '201': description: Successful response for Bulk Delete Room recordings requests content: application/json: schema: type: object title: Bulk Room Recordings Delete Response properties: data: type: object properties: room_recordings: type: integer description: Amount of room recordings affected example: 5 '422': $ref: '#/components/responses/video_UnprocessableEntity' get: summary: View a list of room recordings. description: Returns a paginated list of room recordings. Filter recordings by room, session, participant, recording type, status, duration, or start and end dates. operationId: ListRoomRecordings x-endpoint-cost: medium tags: - Room Recordings parameters: - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[date_started_at][eq], filter[date_started_at][gte], filter[date_started_at][lte], filter[room_id], filter[participant_id], filter[session_id], filter[status], filter[type], filter[duration_secs]' schema: type: object properties: date_ended_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings ended on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings ended on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings ended on or before that date. date_started_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings started on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings started on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room recordings started on or before that date. room_id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: room_id for filtering room recordings. participant_id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: participant_id for filtering room recordings. session_id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: session_id for filtering room recordings. status: type: string example: completed description: status for filtering room recordings. type: type: string example: audio description: type for filtering room recordings. duration_secs: type: integer example: 20 description: duration_secs greater or equal for filtering room recordings. - $ref: '#/components/parameters/video_PageConsolidated' responses: '200': description: List room recordings response. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RoomRecording' meta: $ref: '#/components/schemas/PaginationMeta' 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /room_recordings/{room_recording_id}: delete: summary: Delete a room recording. description: Synchronously deletes the specified video room recording. The recording's media is removed permanently. operationId: DeleteRoomRecording tags: - Room Recordings x-endpoint-cost: medium parameters: - name: room_recording_id in: path description: The unique identifier of a room recording. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/video_ResourceNotFound' get: summary: View a room recording. operationId: ViewRoomRecording tags: - Room Recordings x-endpoint-cost: light parameters: - name: room_recording_id in: path description: The unique identifier of a room recording. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 responses: '200': description: Get room recording response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/RoomRecording' '404': $ref: '#/components/responses/video_ResourceNotFound' description: Returns the recording identified by `room_recording_id`, including its room, session, participant, status, media details, lifecycle timestamps, and download URL. /room_sessions: get: summary: View a list of room sessions. description: Returns a paginated list of room sessions across the account. Filter sessions by room, creation, update, or end date and active status, and use `include_participants` to include participant records. operationId: ListRoomSessions x-endpoint-cost: medium tags: - Room Sessions parameters: - name: include_participants in: query description: To decide if room participants should be included in the response. schema: type: boolean example: true - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte], filter[date_created_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[room_id], filter[active]' schema: type: object properties: date_created_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions created on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions created on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions created on or before that date. date_updated_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions updated on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions updated on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions updated on or before that date. date_ended_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions ended on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions ended on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions ended on or before that date. room_id: type: string example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Room_id for filtering room sessions. active: type: boolean example: true description: Filter active or inactive room sessions. - $ref: '#/components/parameters/video_PageConsolidated' responses: '200': description: List room sessions response. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RoomSession' meta: $ref: '#/components/schemas/PaginationMeta' 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /room_sessions/{room_session_id}: get: summary: View a room session. operationId: ViewRoomSession tags: - Room Sessions x-endpoint-cost: light parameters: - name: room_session_id in: path description: The unique identifier of a room session. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 - name: include_participants in: query description: To decide if room participants should be included in the response. schema: type: boolean example: true responses: '200': description: Get room session response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/RoomSession' '404': $ref: '#/components/responses/video_ResourceNotFound' description: Returns the room session identified by `room_session_id`, including its room, active status, and lifecycle timestamps. Use `include_participants` to include its participant records. /room_sessions/{room_session_id}/actions/end: post: summary: End a room session. description: 'Note: this will also kick all participants currently present in the room' operationId: EndSession x-endpoint-cost: medium tags: - Room Sessions security: [] parameters: - name: room_session_id in: path description: The unique identifier of a room session. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 responses: '200': description: Success Action Response content: application/json: schema: type: object properties: data: type: object properties: result: type: string example: ok 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /room_sessions/{room_session_id}/actions/kick: post: summary: Kick participants from a room session. description: Removes the selected participants from the specified room session. Apply the action to a list of participant IDs or to `all`, with optional participant IDs excluded from the action. operationId: KickParticipantInSession x-endpoint-cost: medium tags: - Room Sessions security: [] parameters: - name: room_session_id in: path description: The unique identifier of a room session. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 requestBody: description: Parameters that can be defined during Kick action. required: true content: application/json: schema: $ref: '#/components/schemas/ActionsParticipantsRequest' responses: '200': description: Success Action Response content: application/json: schema: type: object properties: data: type: object properties: result: type: string example: ok 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /room_sessions/{room_session_id}/actions/mute: post: summary: Mute participants in room session. description: Mutes the selected participants in the specified room session. Apply the action to a list of participant IDs or to `all`, with optional participant IDs excluded from the action. operationId: MuteParticipantInSession x-endpoint-cost: medium tags: - Room Sessions security: [] parameters: - name: room_session_id in: path description: The unique identifier of a room session. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 requestBody: description: Parameters that can be defined during Mute action. required: true content: application/json: schema: $ref: '#/components/schemas/ActionsParticipantsRequest' responses: '200': description: Success Action Response content: application/json: schema: type: object properties: data: type: object properties: result: type: string example: ok 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /room_sessions/{room_session_id}/actions/unmute: post: summary: Unmute participants in room session. description: Unmutes the selected participants in the specified room session. Apply the action to a list of participant IDs or to `all`, with optional participant IDs excluded from the action. operationId: UnmuteParticipantInSession x-endpoint-cost: medium tags: - Room Sessions security: [] parameters: - name: room_session_id in: path description: The unique identifier of a room session. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 requestBody: description: Parameters that can be defined during Unmute action. required: true content: application/json: schema: $ref: '#/components/schemas/ActionsParticipantsRequest' responses: '200': description: Success Action Response content: application/json: schema: type: object properties: data: type: object properties: result: type: string example: ok 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /room_sessions/{room_session_id}/participants: get: summary: View a list of room participants. description: Returns a paginated list of participants for the specified room session. Filter participants by join, update, or leave date and by participant context. operationId: RetrieveListRoomParticipants x-endpoint-cost: medium tags: - Room Sessions parameters: - name: room_session_id in: path description: The unique identifier of a room session. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_joined_at][eq], filter[date_joined_at][gte], filter[date_joined_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[date_left_at][eq], filter[date_left_at][gte], filter[date_left_at][lte], filter[context]' schema: type: object properties: date_joined_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that joined on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that joined on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that joined on or before that date. date_updated_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants updated on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants updated on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants updated on or before that date. date_left_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that left on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that left on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room participants that left on or before that date. context: type: string example: Alice description: Filter room participants based on the context. - $ref: '#/components/parameters/video_PageConsolidated' responses: '200': description: List room participants response. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RoomParticipant' meta: $ref: '#/components/schemas/PaginationMeta' 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /rooms: get: summary: View a list of rooms. description: Returns a paginated list of rooms. Filter the results by creation or update date and unique name, and use `include_sessions` to include each room’s sessions. operationId: ListRooms x-endpoint-cost: medium tags: - Rooms parameters: - name: include_sessions in: query description: To decide if room sessions should be included in the response. schema: type: boolean example: true - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte], filter[date_created_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[unique_name]' schema: type: object properties: date_created_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering rooms created on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering rooms created on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering rooms created on or before that date. date_updated_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering rooms updated on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering rooms updated on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering rooms updated on or before that date. unique_name: type: string example: my_video_room description: Unique_name for filtering rooms. - $ref: '#/components/parameters/video_PageConsolidated' responses: '200': description: List rooms response. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Room' meta: $ref: '#/components/schemas/PaginationMeta' 4XX: $ref: '#/components/responses/video_GenericErrorResponse' post: summary: Create a room. description: Synchronously creates a new video room with the provided configuration and returns the created room. operationId: CreateRoom tags: - Rooms x-endpoint-cost: medium requestBody: description: Parameters that can be defined during room creation. required: true content: application/json: schema: $ref: '#/components/schemas/CreateRoomRequest' responses: '201': description: Create room response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Room' '422': $ref: '#/components/responses/video_UnprocessableEntity' /rooms/{room_id}: delete: summary: Delete a room. description: Synchronously delete a Room. Participants from that room will be kicked out, they won't be able to join that room anymore, and you won't be charged anymore for that room. operationId: DeleteRoom tags: - Rooms x-endpoint-cost: medium parameters: - name: room_id in: path description: The unique identifier of a room. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/video_ResourceNotFound' get: summary: View a room. operationId: ViewRoom tags: - Rooms x-endpoint-cost: light parameters: - name: room_id in: path description: The unique identifier of a room. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 - name: include_sessions in: query description: To decide if room sessions should be included in the response. schema: type: boolean example: true responses: '200': description: Get room response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Room' '404': $ref: '#/components/responses/video_ResourceNotFound' description: Returns the room identified by `room_id`, including its participant limit, recording and webhook configuration, and active session identifier. Use `include_sessions` to include its sessions. patch: summary: Update a room. description: Synchronously updates the specified video room's configuration and returns the updated room. operationId: UpdateRoom tags: - Rooms x-endpoint-cost: medium parameters: - name: room_id in: path description: The unique identifier of a room. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 requestBody: description: Parameters that can be defined during room update. required: true content: application/json: schema: $ref: '#/components/schemas/PatchRoomRequest' responses: '200': description: Update room response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Room' '401': $ref: '#/components/responses/video_UnauthorizedResponse' '404': $ref: '#/components/responses/video_ResourceNotFound' '422': description: Bad request /rooms/{room_id}/actions/generate_join_client_token: post: summary: Create Client Token to join a room. description: Synchronously create an Client Token to join a Room. Client Token is necessary to join a Telnyx Room. Client Token will expire after `token_ttl_secs`, a Refresh Token is also provided to refresh a Client Token, the Refresh Token expires after `refresh_token_ttl_secs`. operationId: CreateRoomClientToken tags: - Rooms Client Tokens x-endpoint-cost: medium parameters: - name: room_id in: path description: The unique identifier of a room. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 requestBody: description: Parameters that can be defined during Room Client Token creation. required: true content: application/json: schema: $ref: '#/components/schemas/CreateRoomClientTokenRequest' responses: '201': description: Create room client token response. content: application/json: schema: type: object properties: data: type: object properties: token: type: string example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ token_expires_at: description: ISO 8601 timestamp when the token expires. type: string format: date-time example: '2021-03-26T17:51:59Z' refresh_token: type: string example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ refresh_token_expires_at: description: ISO 8601 timestamp when the refresh token expires. type: string format: date-time example: '2021-03-26T17:51:59Z' example: token: eyJhbGciOiJFZDI1NTE5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJ0ZWxueXhfYWNjZXNzX3Rva2VuIiwiZXhwIjoxNjE5MDk0Mjk1LCJncmFudHMiOlt7ImFjdGlvbnMiOlsiam9pbiJdLCJyZXNvdXJjZXMiOlsidGVsbnl4OnZpZGVvOnJvb21zOjllMmEwY2JlLWNlNjYtNDExZS1hMWFjLTQ2OGYwYjEwM2M5YSJdLCJzdWJqZWN0cyI6WyJ0ZWxueXg6dXNlcnM6NzgyYjJjYmUtODQ2Ni00ZTNmLWE0ZDMtOTc4MWViNTc3ZTUwIl19XSwiZ3JhbnRzX3ZlcnNpb24iOiIxLjAuMCIsImlhdCI6MTYxOTA5MzY5NSwiaXNzIjoidGVsbnl4X2FjY2Vzc190b2tlbiIsImp0aSI6IjllNjIyOTA2LTc1ZTctNDBiNi1iOTAwLTc1NGIxZjNlZDMyZiIsIm5iZiI6MTYxOTA5MzY5NCwic3ViIjoibnVsbCIsInR5cCI6ImFjY2VzcyJ9.1JGK9PyHkTtoP_iMu-8TzXH_fhmnsDtZZOAJLDzLW6DDtAb80wZ93l1VH5yNx5tFqwIFG0t48dRiBKWlW-nzDA token_expires_at: '2021-04-22T12:24:55Z' refresh_token: eyJhbGciOiJFZDI1NTE5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJ0ZWxueXhfYWNjZXNzX3Rva2VuIiwiZXhwIjoxNjE5MDkzNzA1LCJncmFudHMiOlt7ImFjdGlvbnMiOlsiam9pbiJdLCJyZXNvdXJjZXMiOlsidGVsbnl4OnZpZGVvOnJvb21zOjllMmEwY2JlLWNlNjYtNDExZS1hMWFjLTQ2OGYwYjEwM2M5YSJdLCJzdWJqZWN0cyI6WyJ0ZWxueXg6dXNlcnM6NzgyYjJjYmUtODQ2Ni00ZTNmLWE0ZDMtOTc4MWViNTc3ZTUwIl19XSwiZ3JhbnRzX3ZlcnNpb24iOiIxLjAuMCIsImlhdCI6MTYxOTA5MzY5NSwiaXNzIjoidGVsbnl4X2FjY2Vzc190b2tlbiIsImp0aSI6ImQ3OWJlMzhjLWFkNTQtNGQ5ZC1hODc4LWExNjVjNTk0MGQwNyIsIm5iZiI6MTYxOTA5MzY5NCwic3ViIjoibnVsbCIsInR5cCI6InJlZnJlc2gifQ.FHsp7KlVXn1E5tTUiKZzmQ4of39gi57AakeQeqI0oAa8hzjFMVb0RGj-mxWTvHVen4GpgsUW_epqqaxK16viCA refresh_token_expires_at: '2021-04-22T12:15:05Z' '403': $ref: '#/components/responses/video_Forbidden' /rooms/{room_id}/actions/refresh_client_token: post: summary: Refresh Client Token to join a room. description: Synchronously refresh an Client Token to join a Room. Client Token is necessary to join a Telnyx Room. Client Token will expire after `token_ttl_secs`. operationId: RefreshRoomClientToken tags: - Rooms Client Tokens x-endpoint-cost: light security: [] parameters: - name: room_id in: path description: The unique identifier of a room. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 requestBody: description: Parameters that can be defined during Room Client Token refresh. required: true content: application/json: schema: $ref: '#/components/schemas/RefreshRoomClientTokenRequest' responses: '201': description: Refresh room client token response. content: application/json: schema: type: object properties: data: type: object properties: token: type: string example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ token_expires_at: description: ISO 8601 timestamp when the token expires. type: string format: date-time example: '2021-03-26T17:51:59Z' example: token: eyJhbGciOiJFZDI1NTE5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJ0ZWxueXhfYWNjZXNzX3Rva2VuIiwiZXhwIjoxNjE5MDk0Mjk1LCJncmFudHMiOlt7ImFjdGlvbnMiOlsiam9pbiJdLCJyZXNvdXJjZXMiOlsidGVsbnl4OnZpZGVvOnJvb21zOjllMmEwY2JlLWNlNjYtNDExZS1hMWFjLTQ2OGYwYjEwM2M5YSJdLCJzdWJqZWN0cyI6WyJ0ZWxueXg6dXNlcnM6NzgyYjJjYmUtODQ2Ni00ZTNmLWE0ZDMtOTc4MWViNTc3ZTUwIl19XSwiZ3JhbnRzX3ZlcnNpb24iOiIxLjAuMCIsImlhdCI6MTYxOTA5MzY5NSwiaXNzIjoidGVsbnl4X2FjY2Vzc190b2tlbiIsImp0aSI6IjllNjIyOTA2LTc1ZTctNDBiNi1iOTAwLTc1NGIxZjNlZDMyZiIsIm5iZiI6MTYxOTA5MzY5NCwic3ViIjoibnVsbCIsInR5cCI6ImFjY2VzcyJ9.1JGK9PyHkTtoP_iMu-8TzXH_fhmnsDtZZOAJLDzLW6DDtAb80wZ93l1VH5yNx5tFqwIFG0t48dRiBKWlW-nzDA token_expires_at: '2021-04-22T12:24:55Z' '403': $ref: '#/components/responses/video_Forbidden' /rooms/{room_id}/sessions: get: summary: View a list of room sessions. description: Returns a paginated list of sessions for the specified room. Filter sessions by creation, update, or end date and active status, and use `include_participants` to include participant records. operationId: RetrieveListRoomSessions x-endpoint-cost: medium tags: - Rooms parameters: - name: room_id in: path description: The unique identifier of a room. required: true schema: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 - name: include_participants in: query description: To decide if room participants should be included in the response. schema: type: boolean example: true - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte], filter[date_created_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[active]' schema: type: object properties: date_created_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions created on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions created on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions created on or before that date. date_updated_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions updated on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions updated on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions updated on or before that date. date_ended_at: type: object properties: eq: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions ended on that date. gte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions ended on or after that date. lte: type: string format: date example: '2021-04-25' description: ISO 8601 date for filtering room sessions ended on or before that date. active: type: boolean example: true description: Filter active or inactive room sessions. - $ref: '#/components/parameters/video_PageConsolidated' responses: '200': description: List room sessions response. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/RoomSession' meta: $ref: '#/components/schemas/PaginationMeta' 4XX: $ref: '#/components/responses/video_GenericErrorResponse' /session_analysis/metadata: get: tags: - Session Analysis summary: Get metadata overview description: Returns all available record types and supported query parameters for session analysis. operationId: GetSessionAnalysisMetadata responses: '200': description: Metadata overview content: application/json: schema: $ref: '#/components/schemas/MetadataOverviewResponse' example: record_types: - record_type: string aliases: - string product: string event: string description: string child_relationships: - relationship_type: string via: local_field: string parent_field: string cost_rollup: false traversal_enabled: false description: string child_product: string child_event: string child_record_type: string parent_relationships: - relationship_type: string via: local_field: string parent_field: string cost_rollup: false traversal_enabled: false description: string parent_product: string parent_event: string parent_record_type: string meta: total_record_types: 0 last_updated: '2024-01-23T18:10:02.574Z' query_parameters: {} '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' /session_analysis/metadata/{record_type}: get: tags: - Session Analysis summary: Get record type metadata description: Returns detailed metadata for a specific record type, including relationships and examples. operationId: GetSessionAnalysisRecordTypeMetadata parameters: - name: record_type in: path required: true description: The record type identifier (e.g. "call-control"). schema: type: string responses: '200': description: Record type metadata content: application/json: schema: $ref: '#/components/schemas/RecordTypeMetadataResponse' example: record_type: call-control aliases: - call_control product: Voice event: call.hangup child_relationships: [] parent_relationships: [] examples: event_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 meta: total_children: 0 total_siblings: 0 total_parents: 0 max_recommended_depth: 1 '404': description: Record type not found content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' /session_analysis/{record_type}/{event_id}: get: tags: - Session Analysis summary: Get session analysis description: Retrieves a full session analysis tree for a given event, including costs, child events, and product linkages. operationId: GetSessionAnalysis parameters: - name: record_type in: path required: true description: The record type identifier. schema: type: string - name: event_id in: path required: true description: The event identifier (UUID). schema: type: string format: uuid - name: include_children in: query required: false description: Whether to include child events in the response. schema: type: boolean default: true - name: max_depth in: query required: false description: Maximum traversal depth for the event tree. schema: type: integer minimum: 1 maximum: 5 default: 2 - name: expand in: query required: false description: Controls what data to expand on each event node. schema: type: string enum: - record - none default: record - name: date_time in: query required: false description: ISO 8601 timestamp or date to narrow index selection for faster lookups. Accepts full datetime (e.g., 2026-03-17T10:00:00Z) or date-only format (e.g., 2026-03-17). schema: type: string format: date-time responses: '200': description: Session analysis result content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisResponse' example: session_id: call-123 cost: total: '0.056800' currency: USD root: id: call-123 product: callcontrol-cdrs event_name: callcontrol-cdrs relationship: null cost: event_cost: '0.001800' cumulative_cost: '0.056800' currency: USD links: self: /v2/session_analysis/callcontrol-cdrs/call-123 records: /v2/detail_records?record_type=callcontrol-cdrs&id=call-123 record: {} children: [] meta: event_count: 3 products: - ai-voice-assistant - callcontrol-cdrs - inference '400': description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' '404': description: Event not found content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/SessionAnalysisErrorResponse' /seti/black_box_test_results: get: summary: Retrieve Black Box Test Results description: Returns the results of the various black box tests operationId: GetBlackBoxTestResults tags: - SETI Observability parameters: - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[product]' schema: type: object properties: product: type: string description: Filter results for a specific product. responses: '200': description: A list of black box test results. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/BlackBoxTestResultSet' '401': description: Unauthorized /short_codes: get: summary: List short codes operationId: ListShortCodes tags: - Short Codes x-group-parameters: 'true' parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[messaging_profile_id]' schema: type: object properties: messaging_profile_id: type: string description: Filter by Messaging Profile ID. Use the string `null` for phone numbers without assigned profiles. A synonym for the `/messaging_profiles/{id}/short_codes` endpoint when querying about an extant profile. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response with a list of short codes. content: application/json: schema: type: object title: List Short Codes Response properties: data: type: array items: $ref: '#/components/schemas/ShortCode' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns short codes owned by the authenticated account. Apply the documented filters and pagination parameters to narrow the result set. /short_codes/{id}: get: summary: Retrieve a short code operationId: RetrieveShortCode tags: - Short Codes parameters: - $ref: '#/components/parameters/ShortCodeId' responses: '200': description: Successful response with details about a short code. content: application/json: schema: type: object title: Short Code Response properties: data: $ref: '#/components/schemas/ShortCode' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the messaging configuration and assignment details for the specified short code. patch: summary: Update short code operationId: UpdateShortCode description: 'Update the settings for a specific short code. To unbind a short code from a profile, set the `messaging_profile_id` to `null` or an empty string. To add or update tags, include the tags field as an array of strings.' tags: - Short Codes parameters: - $ref: '#/components/parameters/ShortCodeId' requestBody: description: Short code update required: true content: application/json: schema: $ref: '#/components/schemas/UpdateShortCodeRequest' responses: '200': description: Successful response with details about a short code. content: application/json: schema: type: object title: Short Code Response properties: data: $ref: '#/components/schemas/ShortCode' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /sim_card_actions: get: operationId: ListSimCardActions summary: List SIM card actions description: This API lists a paginated collection of SIM card actions. It enables exploring a collection of existing asynchronous operations using specific filters. tags: - SIM Card Actions parameters: - $ref: '#/components/parameters/FilterSIMCardActionsConsolidated' - $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308' responses: '200': content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/wireless_SIMCardAction' meta: $ref: '#/components/schemas/PaginationMeta' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_actions/{id}: get: operationId: GetSimCardAction summary: Get SIM card action details description: This API fetches detailed information about a SIM card action to follow-up on an existing asynchronous operation. tags: - SIM Card Actions parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_data_usage_notifications: get: x-latency-category: background operationId: ListDataUsageNotifications summary: List SIM card data usage notifications description: Lists a paginated collection of SIM card data usage notifications. It enables exploring the collection using specific filters. tags: - SIM Cards parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - $ref: '#/components/parameters/FilterSIMCardId' responses: '200': content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SimCardDataUsageNotification' meta: $ref: '#/components/schemas/PaginationMeta' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' post: operationId: PostSimCardDataUsageNotification summary: Create a new SIM card data usage notification description: Creates a new SIM card data usage notification. tags: - SIM Cards requestBody: required: true content: application/json: schema: type: object properties: sim_card_id: type: string format: uuid description: The identification UUID of the related SIM card resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 threshold: type: object description: Data usage threshold that will trigger the notification. properties: amount: type: string example: '2048.1' unit: type: string example: MB enum: - MB - GB required: - sim_card_id - threshold responses: '201': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SimCardDataUsageNotification' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_data_usage_notifications/{id}: delete: operationId: DeleteSimCardDataUsageNotifications summary: Delete SIM card data usage notifications description: Delete the SIM Card Data Usage Notification. tags: - SIM Cards parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SimCardDataUsageNotification' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' get: x-latency-category: background operationId: GetSimCardDataUsageNotification summary: Get a single SIM card data usage notification description: Get a single SIM Card Data Usage Notification. tags: - SIM Cards parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SimCardDataUsageNotification' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' patch: operationId: PatchSimCardDataUsageNotification summary: Updates information for a SIM Card Data Usage Notification description: Updates information for a SIM Card Data Usage Notification. tags: - SIM Cards parameters: - $ref: '#/components/parameters/ResourceId' requestBody: content: application/json: schema: $ref: '#/components/schemas/SimCardDataUsageNotification' required: true responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SimCardDataUsageNotification' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_group_actions: get: operationId: GetSimCardGroupActions summary: List SIM card group actions description: This API allows listing a paginated collection a SIM card group actions. It allows to explore a collection of existing asynchronous operation using specific filters. tags: - SIM Card Group Actions parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - $ref: '#/components/parameters/FilterSIMCardGroupId' - $ref: '#/components/parameters/FilterBasicStatusLifecycle' - name: filter[type] description: Filter by action type. in: query required: false schema: type: string enum: - set_private_wireless_gateway - remove_private_wireless_gateway - set_wireless_blocklist - remove_wireless_blocklist example: set_private_wireless_gateway responses: '200': content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SIMCardGroupAction' meta: $ref: '#/components/schemas/PaginationMeta' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_group_actions/{id}: get: operationId: GetSimCardGroupAction summary: Get SIM card group action details description: This API allows fetching detailed information about a SIM card group action resource to make follow-ups in an existing asynchronous operation. tags: - SIM Card Group Actions parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroupAction' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_groups: get: tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - name: filter[name] description: A valid SIM card group name. schema: type: string example: My Test Group in: query - name: filter[private_wireless_gateway_id] description: A Private Wireless Gateway ID associated with the group. schema: format: uuid type: string example: 7606c6d3-ff7c-49c1-943d-68879e9d584d in: query - name: filter[wireless_blocklist_id] description: A Wireless Blocklist ID associated with the group. schema: format: uuid type: string example: 0f3f490e-c4d3-4cf5-838a-9970f10ee259 in: query responses: '200': content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SearchedSIMCardGroup' meta: $ref: '#/components/schemas/PaginationMeta' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' operationId: GetAllSimCardGroups summary: Get all SIM card groups description: Get all SIM card groups belonging to the user that match the given filters. post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SIMCardGroupCreate' required: true tags: - SIM Card Groups responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroup' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' operationId: CreateSimCardGroup summary: Create a SIM card group description: Creates a new SIM card group and returns it. Groups let you apply shared settings to a set of SIM cards. /sim_card_groups/{id}: delete: tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/SIMCardGroupId' responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroup' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' operationId: DeleteSimCardGroup summary: Delete a SIM card group description: Permanently deletes the specified SIM card group from your account. get: tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/SIMCardGroupId' - $ref: '#/components/parameters/IncludeICCIDs' responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroup' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' operationId: GetSimCardGroup summary: Get SIM card group description: Returns the details regarding a specific SIM card group patch: requestBody: content: application/json: schema: $ref: '#/components/schemas/SIMCardGroupPatch' required: true tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/SIMCardGroupId' responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroup' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' operationId: UpdateSimCardGroup summary: Update a SIM card group description: Updates the specified SIM card group's attributes and returns the updated group. /sim_card_groups/{id}/actions/remove_private_wireless_gateway: post: x-latency-category: background summary: Request Private Wireless Gateway removal from SIM card group description: This action will asynchronously remove an existing Private Wireless Gateway definition from a SIM card group. Completing this operation defines that all SIM cards in the SIM card group will get their traffic handled by Telnyx's default mobile network configuration. operationId: RemoveSimCardGroupPrivateWirelessGateway tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/SIMCardGroupId' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroupAction' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_groups/{id}/actions/remove_wireless_blocklist: post: x-latency-category: background summary: Request Wireless Blocklist removal from SIM card group description: This action asynchronously removes the Wireless Blocklist assigned to a SIM Card Group. The request returns `404` when the SIM Card Group does not exist and `422` when no Wireless Blocklist is assigned. operationId: RemoveWirelessBlocklistForSimCardGroup tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/SIMCardGroupId' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroupAction' description: Successful Response '404': description: SIM Card Group not found content: application/json: schema: $ref: '#/components/schemas/Errors' examples: simCardGroupNotFound: summary: SIM Card Group not found value: errors: - code: '10005' meta: url: https://developers.telnyx.com/api/errors/10005 title: Resource not found source: pointer: / detail: The requested resource or URL could not be found. '422': description: No Wireless Blocklist is assigned to the SIM Card Group content: application/json: schema: $ref: '#/components/schemas/Errors' examples: wirelessBlocklistNotAssigned: summary: No Wireless Blocklist is assigned value: errors: - code: '10005' meta: url: https://developers.telnyx.com/api/errors/10005 title: Resource not found source: pointer: /wireless_blocklist_id detail: The requested resource or URL could not be found. '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_groups/{id}/actions/set_private_wireless_gateway: post: x-latency-category: background summary: Request Private Wireless Gateway assignment for SIM card group description: This action will asynchronously assign a provisioned Private Wireless Gateway to the SIM card group. Completing this operation defines that all SIM cards in the SIM card group will get their traffic controlled by the associated Private Wireless Gateway. This operation will also imply that new SIM cards assigned to a group will inherit its network definitions. If it's moved to a different group that doesn't have a Private Wireless Gateway, it'll use Telnyx's default mobile network configuration. operationId: SetPrivateWirelessGatewayForSimCardGroup tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/SIMCardGroupId' requestBody: required: true content: application/json: schema: type: object properties: private_wireless_gateway_id: description: The identification of the related Private Wireless Gateway resource. format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 required: - private_wireless_gateway_id responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroupAction' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_groups/{id}/actions/set_wireless_blocklist: post: x-latency-category: background summary: Request Wireless Blocklist assignment for SIM card group description: This action asynchronously assigns a Wireless Blocklist to all SIMs in the SIM Card Group. The request returns `404` when the SIM Card Group does not exist and `422` when the Wireless Blocklist does not exist. operationId: SetWirelessBlocklistForSimCardGroup tags: - SIM Card Groups parameters: - $ref: '#/components/parameters/SIMCardGroupId' requestBody: required: true content: application/json: schema: type: object properties: wireless_blocklist_id: description: The identification of the related Wireless Blocklist resource. format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 required: - wireless_blocklist_id responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardGroupAction' description: Successful Response '404': description: SIM Card Group not found content: application/json: schema: $ref: '#/components/schemas/Errors' examples: simCardGroupNotFound: summary: SIM Card Group not found value: errors: - code: '10005' meta: url: https://developers.telnyx.com/api/errors/10005 title: Resource not found source: pointer: / detail: The requested resource or URL could not be found. '422': description: Wireless Blocklist not found content: application/json: schema: $ref: '#/components/schemas/Errors' examples: wirelessBlocklistNotFound: summary: Wireless Blocklist not found value: errors: - code: '10005' meta: url: https://developers.telnyx.com/api/errors/10005 title: Resource not found source: pointer: /wireless_blocklist_id detail: The requested resource or URL could not be found. '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_card_order_preview: post: summary: Preview SIM card orders description: Previews a SIM card order purchase, returning estimated costs and details before you place the order. The preview is processed asynchronously. operationId: PreviewSimCardOrders tags: - SIM Card Orders requestBody: content: application/json: schema: type: object required: - quantity - address_id properties: quantity: type: integer minimum: 1 description: The amount of SIM cards that the user would like to purchase in the SIM card order. example: 21 address_id: type: string description: Uniquely identifies the address for the order. example: '1293384261075731499' responses: '202': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardOrderPreview' '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' /sim_card_orders: get: summary: Get all SIM card orders description: Get all SIM card orders according to filters. operationId: GetSimCardOrders tags: - SIM Card Orders parameters: - $ref: '#/components/parameters/FilterSIMCardOrdersConsolidated' - $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308' responses: '200': content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SIMCardOrder' meta: $ref: '#/components/schemas/PaginationMeta' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SimCardOrderCreate' required: true tags: - SIM Card Orders responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardOrder' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' summary: Create a SIM card order description: Creates a new order for physical SIM cards, including quantity and shipping details, and returns the created order. operationId: CreateSimCardOrder /sim_card_orders/{id}: get: summary: Get a single SIM card order description: Returns the details of a single SIM card order by its ID, including its status. operationId: GetSimCardOrder tags: - SIM Card Orders parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardOrder' description: Successful Response '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards: get: summary: Get all SIM cards description: Get all SIM cards belonging to the user that match the given filters. operationId: GetSimCards tags: - SIM Cards parameters: - $ref: '#/components/parameters/FilterSIMCardConsolidated' - $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308' - $ref: '#/components/parameters/IncludeSIMCardGroup' - $ref: '#/components/parameters/FilterSIMCardGroupId' - name: sort description: Sorts SIM cards by the given field. Defaults to ascending order unless field is prefixed with a minus sign. in: query required: false example: -current_billing_period_consumed_data.amount schema: type: string enum: - current_billing_period_consumed_data.amount - -current_billing_period_consumed_data.amount responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SimpleSIMCard' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/actions/bulk_disable_voice: post: x-latency-category: background summary: Request bulk disabling voice on SIM cards. description: 'This API triggers an asynchronous operation to disable voice on SIM cards belonging to a specified SIM Card Group.
For each SIM Card a SIM Card Action will be generated. The status of the SIM Card Actions can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. The overall status of the Bulk SIM Card Action can be followed through the [List Bulk SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-bulk-sim-card-actions) API. ' operationId: DisableVoiceBulk tags: - SIM Cards requestBody: content: application/json: schema: type: object required: - sim_card_group_id properties: sim_card_group_id: type: string example: 6b14e151-8493-4fa1-8664-1cc4e6d14158 responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BulkSIMCardAction' description: Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track progress. '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' /sim_cards/actions/bulk_enable_voice: post: x-latency-category: background summary: Request bulk enabling voice on SIM cards. description: 'This API triggers an asynchronous operation to enable voice on SIM cards belonging to a specified SIM Card Group.
For each SIM Card a SIM Card Action will be generated. The status of the SIM Card Actions can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. The overall status of the Bulk SIM Card Action can be followed through the [List Bulk SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-bulk-sim-card-actions) API. ' operationId: EnableVoiceBulk tags: - SIM Cards requestBody: content: application/json: schema: type: object required: - sim_card_group_id properties: sim_card_group_id: type: string example: 6b14e151-8493-4fa1-8664-1cc4e6d14158 connection_id: type: string description: The identifier of the Mobile Voice Connection to associate with the SIM cards. The connection must be owned by the same user and of type mobile_voice. If omitted, voice is enabled without a connection association. example: '123456789' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BulkSIMCardAction' description: Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track progress. '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' '400': description: Bad Request — invalid connection_id format content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Invalid connection_id format: value: errors: - code: '10015' title: Invalid connection_id detail: The provided connection_id is not a valid connection ID. source: pointer: /connection_id meta: url: https://developers.telnyx.com/docs/overview/errors/10015 /sim_cards/actions/bulk_set_public_ips: post: x-latency-category: background summary: Request bulk setting SIM card public IPs. description: 'This API triggers an asynchronous operation to set a public IP for each of the specified SIM cards.
For each SIM Card a SIM Card Action will be generated. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. ' operationId: SetPublicIPsBulk tags: - SIM Cards requestBody: content: application/json: schema: type: object required: - sim_card_ids properties: sim_card_ids: type: array items: $ref: '#/components/schemas/wireless_Id_c5290d5308' example: - 6b14e151-8493-4fa1-8664-1cc4e6d14158 responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BulkSIMCardAction' description: Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track progress. '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' /sim_cards/actions/validate_registration_codes: post: summary: Validate SIM cards registration codes tags: - SIM Cards description: It validates whether SIM card registration codes are valid or not. operationId: ValidateRegistrationCodes requestBody: required: true content: application/json: schema: type: object properties: registration_codes: type: array items: type: string description: The object containing the Array of SIM card registration codes. example: registration_codes: - '123456780' - '1231231230' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/SIMCardRegistrationCodeValidations' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}: delete: summary: Deletes a SIM card description: 'The SIM card will be decommissioned, removed from your account and you will stop being charged.
The SIM card won''t be able to connect to the network after the deletion is completed, thus making it impossible to consume data.
Transitioning to the disabled state may take a period of time. Until the transition is completed, the SIM card status will be disabling disabling.
In order to re-enable the SIM card, you will need to re-register it.' operationId: DeleteSimCard tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' - name: report_lost in: query description: Enables deletion of disabled eSIMs that can't be uninstalled from a device. This is irreversible and the eSIM cannot be re-registered. required: false schema: type: boolean default: false responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCard' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' get: summary: Get SIM card description: Returns the details regarding a specific SIM card. operationId: GetSimCard tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' - $ref: '#/components/parameters/IncludeSIMCardGroup' - name: include_pin_puk_codes in: query description: When set to true, includes the PIN and PUK codes in the response. These codes are used for SIM card security and unlocking purposes. Available for both physical SIM cards and eSIMs. required: false schema: type: boolean default: false responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCard' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' patch: summary: Update a SIM card description: Updates the specified SIM card's attributes and returns the updated SIM card. operationId: UpdateSimCard tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' requestBody: content: application/json: schema: $ref: '#/components/schemas/SIMCard' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCard' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/actions/disable: post: x-latency-category: background summary: Request a SIM card disable description: 'This API disables a SIM card, disconnecting it from the network and making it impossible to consume data.
The API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the disabled state may take a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. ' operationId: DisableSimCard tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress. '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/actions/disable_voice: post: x-latency-category: background summary: Request disabling voice on a SIM card description: 'This API disables voice calling on a SIM card. The SIM card will no longer be able to make or receive calls.
The API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. ' operationId: DisableVoiceSimCard tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress. '422': content: application/json: schema: $ref: '#/components/schemas/Errors' examples: SIM card not found: value: errors: - code: '404' title: Resource not found detail: The SIM card was not found. source: pointer: /id meta: url: https://developers.telnyx.com/docs/overview/errors/404 description: Unprocessable Entity default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/actions/enable: post: x-latency-category: background summary: Request a SIM card enable description: 'This API enables a SIM card, connecting it to the network and making it possible to consume data.
To enable a SIM card, it must be associated with a SIM card group.
The API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the enabled state may take a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. ' operationId: EnableSimCard tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress. '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/actions/enable_voice: post: x-latency-category: background summary: Request enabling voice on a SIM card description: 'This API enables voice calling on a SIM card. When a connection_id is provided, the SIM is associated with the specified Mobile Voice Connection. The connection must be owned by the same user and of type mobile_voice.
The API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. ' operationId: EnableVoiceSimCard tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' requestBody: content: application/json: schema: type: object properties: connection_id: type: string description: The identifier of the Mobile Voice Connection to associate with this SIM card. The connection must be owned by the same user and of type mobile_voice. If omitted, voice is enabled without a connection association. example: '123456789' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress. '400': description: Bad Request — invalid connection_id format content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Invalid connection_id format: value: errors: - code: '10015' title: Invalid connection_id detail: The provided connection_id is not a valid connection ID. source: pointer: /connection_id meta: url: https://developers.telnyx.com/docs/overview/errors/10015 '422': content: application/json: schema: $ref: '#/components/schemas/Errors' examples: SIM card not found: value: errors: - code: '404' title: Resource not found detail: The SIM card was not found. source: pointer: /id meta: url: https://developers.telnyx.com/docs/overview/errors/404 Connection does not belong to SIM card: value: errors: - code: '10015' title: Invalid connection detail: The provided connection_id does not belong to this SIM card or is not a mobile voice connection. source: pointer: /connection_id meta: url: https://developers.telnyx.com/docs/overview/errors/10015 description: Unprocessable Entity default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/actions/remove_public_ip: post: summary: Request removing a SIM card public IP description: "This API removes an existing public IP from a SIM card.

\n The API will trigger an asynchronous\ \ operation called a SIM Card Action. The status of the SIM Card Action can be followed through the [List SIM Card\ \ Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API." operationId: RemoveSimCardPublicIp tags: - SIM Cards x-latency-category: background parameters: - $ref: '#/components/parameters/SIMCardId' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress. '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/actions/set_public_ip: post: x-latency-category: background summary: Request setting a SIM card public IP description: "This API makes a SIM card reachable on the public internet by mapping a random public IP to the SIM card.\ \

\n The API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card\ \ Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions)\ \ API.

\n Setting a Public IP to a SIM Card incurs a charge and will only succeed if the account has sufficient\ \ funds." operationId: SetSimCardPublicIp tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' - name: region_code in: query description: The code of the region where the public IP should be assigned. A list of available regions can be found at the regions endpoint required: false schema: type: string example: dc2 responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress. '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/actions/set_standby: post: x-latency-category: background summary: Request setting a SIM card to standby description: 'The SIM card will be able to connect to the network once the process to set it to standby has been completed, thus making it possible to consume data.
To set a SIM card to standby, it must be associated with SIM card group.
The API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the standby state may take a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API. ' operationId: SetSimCardStandby tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' responses: '202': content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_SIMCardAction' description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress. '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/activation_code: get: summary: Get activation code for an eSIM description: "It returns the activation code for an eSIM.

\n This API is only available for eSIMs. If the given\ \ SIM is a physical SIM card, or has already been installed, an error will be returned.\n" operationId: GetSimCardActivationCode tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardActivationCode' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/device_details: get: summary: Get SIM card device details description: 'It returns the device details where a SIM card is currently being used. ' operationId: GetSimCardDeviceDetails tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardDeviceDetails' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/public_ip: get: summary: Get SIM card public IP definition description: 'It returns the public IP requested for a SIM card. ' operationId: GetSimCardPublicIp tags: - SIM Cards parameters: - $ref: '#/components/parameters/SIMCardId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SIMCardPublicIP' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sim_cards/{id}/wireless_connectivity_logs: get: operationId: GetWirelessConnectivityLogs summary: List wireless connectivity logs description: This API allows listing a paginated collection of Wireless Connectivity Logs associated with a SIM Card, for troubleshooting purposes. tags: - SIM Cards parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - $ref: '#/components/parameters/SIMCardId' responses: '200': content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WirelessConnectivityLog' meta: $ref: '#/components/schemas/PaginationMeta' description: Successful Response '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /sip_registration_status: get: summary: SIP Registration Status description: 'Returns the live SIP registration status for a Telnyx endpoint: whether it is currently registered, when the current registration expires, and the last response Telnyx received from the registrar. The endpoint supports three credential types, selected with the `credential_type` query parameter. Each type is keyed by a different identifier: | `credential_type` | Keyed by | Use case | | --- | --- | --- | | `uac_external_credential` | `connection_id` | A UAC (SIP attach) connection that registers to an external PBX. | | `telephony_credential` | `username` | An ephemeral, one-time-use telephony credential. | | `sip_credential_connection` | `username` | A traditional SIP credential connection that registers directly to Telnyx. | The authenticated account is taken from your API key; you can only read the registration status of connections and credentials your account owns.' operationId: GetSipRegistrationStatus tags: - UAC Connections parameters: - name: credential_type in: query required: true description: The kind of credential to look up. `uac_external_credential` is keyed by `connection_id`; `telephony_credential` and `sip_credential_connection` are keyed by `username`. schema: type: string enum: - uac_external_credential - telephony_credential - sip_credential_connection - name: connection_id in: query required: false description: Identifier of the UAC connection to look up. Required when `credential_type` is `uac_external_credential`. schema: type: string example: '1234567890' - name: username in: query required: false description: SIP username to look up. Required when `credential_type` is `telephony_credential` or `sip_credential_connection`. schema: type: string example: useralice12345 responses: '200': description: Registration status payload content: application/json: schema: $ref: '#/components/schemas/SipRegistrationStatus' examples: uac_credential: summary: UAC external credential - registered value: connection_id: '1234567890' connection_name: FreePBX UAC 1002 credential_type: uac_external_credential credential_username: useralice12345 registered: true sip_registration_status: registered last_registration_response: 200 OK sip_registration_details: auth_retries: 0 expires: 1780404431 uptime: 1780401551699908 next_action_at: 1780414482 failures: 0 sip_uri_user_host: 1002@192.0.2.10 telephony_credential: summary: Telephony credential - registered value: connection_id: '2845678901234567890' connection_name: Softphone Credential Connection credential_type: telephony_credential credential_username: gencredq7f3k9x2 registered: true sip_registration_status: registered last_registration_response: 200 OK sip_registration_details: expires: 3600 ua_ip: 192.0.2.55 ua_port: 14934 transport: UDP last_modified: '2026-06-15T11:23:13Z' sip_credential_connection: summary: SIP credential connection - registered value: connection_id: '1701773312243271678' connection_name: Office Softphone credential_type: sip_credential_connection credential_username: office_softphone_01 registered: true sip_registration_status: registered last_registration_response: 200 OK sip_registration_details: expires: 3600 ua_ip: 192.0.2.88 ua_port: 5060 transport: TCP last_modified: '2026-06-05T09:10:00Z' not_registered: summary: Not registered (trying) value: connection_id: '1701773312243271678' connection_name: Office Softphone credential_type: sip_credential_connection credential_username: office_softphone_01 registered: false sip_registration_status: trying last_registration_response: null sip_registration_details: {} connection_disabled: summary: Connection disabled value: connection_id: '1088210431736022026' connection_name: Disabled Connection credential_type: sip_credential_connection credential_username: disabled_user_01 registered: false sip_registration_status: connection_disabled last_registration_response: null sip_registration_details: {} '400': description: Missing or invalid query parameters. Returned when `credential_type` is unsupported, or when the identifier required for the chosen `credential_type` (`connection_id` or `username`) is missing. '401': description: Missing or invalid API key '403': description: The connection or credential exists but is not owned by the authenticated account '404': description: No connection or credential matches the supplied identifier, or it has no known registration /siprec_connectors: post: summary: Create a SIPREC connector description: Creates a new SIPREC connector configuration. operationId: createSiprecConnector tags: - SIPREC Connectors requestBody: $ref: '#/components/requestBodies/SiprecConnectorRequest' responses: '201': description: Return details of the SIPREC connector. content: application/json: schema: $ref: '#/components/schemas/SiprecConnectorResponse' '422': $ref: '#/components/responses/siprec_siprec_UnprocessableEntityResponse' default: $ref: '#/components/responses/siprec_siprec_GenericErrorResponse' /siprec_connectors/{connector_name}: delete: summary: Delete a SIPREC connector description: Deletes the stored SIPREC connector with the specified connector name. operationId: deleteSiprecConnector tags: - SIPREC Connectors parameters: - $ref: '#/components/parameters/SiprecConnectorName' responses: '204': description: The SIPREC connector was deleted successfully. '404': $ref: '#/components/responses/siprec_siprec_NotFoundResponse' default: $ref: '#/components/responses/siprec_siprec_GenericErrorResponse' get: summary: Retrieve a SIPREC connector description: Returns details of a stored SIPREC connector. operationId: getSiprecConnector tags: - SIPREC Connectors parameters: - $ref: '#/components/parameters/SiprecConnectorName' responses: '200': description: Return details of the SIPREC connector. content: application/json: schema: $ref: '#/components/schemas/SiprecConnectorResponse' '404': $ref: '#/components/responses/siprec_siprec_NotFoundResponse' default: $ref: '#/components/responses/siprec_siprec_GenericErrorResponse' put: summary: Update a SIPREC connector description: Updates a stored SIPREC connector configuration. operationId: updateSiprecConnector tags: - SIPREC Connectors parameters: - $ref: '#/components/parameters/SiprecConnectorName' requestBody: $ref: '#/components/requestBodies/SiprecConnectorRequest' responses: '200': description: Return details of the SIPREC connector. content: application/json: schema: $ref: '#/components/schemas/SiprecConnectorResponse' '404': $ref: '#/components/responses/siprec_siprec_NotFoundResponse' '422': $ref: '#/components/responses/siprec_siprec_UnprocessableEntityResponse' default: $ref: '#/components/responses/siprec_siprec_GenericErrorResponse' /speech-to-text/providers: get: summary: List supported STT providers description: "Retrieve the canonical list of supported speech-to-text providers, models, accepted language codes, and\ \ the service types each model supports.\n\nService types:\n * `streaming` — standalone WebSocket transcription via\ \ `/speech-to-text/transcription`.\n * `file_based` — file-based transcription via `/ai/audio/transcriptions`.\n\ \ * `in_call` — live call transcription via Call Control `transcription_start`.\n * `ai_assistant` — STT configured\ \ on a Call Control AI Assistant via voice-assistant `TranscriptionConfig` (covers both live-streaming and non-streaming/batch\ \ models).\n\nUse this endpoint to discover which (provider, model) combinations are available for the surface you\ \ need, and which language codes each accepts. `auto` in a `languages` array indicates the provider performs language\ \ detection." operationId: listSttProviders servers: - url: https://api.telnyx.com/v2 description: Telnyx API v2 tags: - Speech To Text Capabilities parameters: - name: service_type in: query required: false description: Filter to entries that support the given service type. For backward compatibility with the values that briefly shipped before the product-aligned rename, the legacy aliases `file_transcription`, `in_call_transcription`, and `ai_assistant_transcription` are silently accepted and normalized to `file_based`, `in_call`, and `ai_assistant` respectively. The response always emits the canonical (post-rename) values. schema: $ref: '#/components/schemas/STTServiceType' - name: provider in: query required: false description: Filter to entries for a specific STT provider. The enum mirrors the providers advertised across the speech-to-text spec (including `google` and `telnyx`, which are accepted as WebSocket transcription engines). A provider that has no models currently registered for any service type will return an empty `data` array rather than an error. schema: type: string enum: - deepgram - speechmatics - assemblyai - xai - soniox - parakeet - humain - reson8 - cohere - azure - openai - google - telnyx responses: '200': description: List of supported STT providers and models. content: application/json: schema: $ref: '#/components/schemas/STTProvidersResponse' '400': description: Bad request — invalid filter value. content: application/json: schema: $ref: '#/components/schemas/speech-to-text_Errors' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. '401': description: Authentication failed — missing or invalid API key. '422': $ref: '#/components/responses/speech-to-text_UnprocessableEntityResponse' x-latency-category: responsive /speech-to-text/transcription: get: summary: Speech to text over WebSocket description: 'Open a WebSocket connection to stream audio and receive transcriptions in real-time. Authentication is provided via the standard `Authorization: Bearer ` header. Supported engines: `Azure`, `Deepgram`, `Google`, `Telnyx`, `xAI`, `Speechmatics`, `Soniox`, `Parakeet`, `Humain`, `Reson8`, `Cohere`. **Connection flow:** 1. Open WebSocket with query parameters specifying engine, input format, and language. 2. Send binary audio frames (mp3, wav, linear16, or linear32 format, per `input_format`). 3. Receive JSON transcript frames with `transcript`, `is_final`, and `confidence` fields. 4. Close connection when done.' operationId: TranscriptionOverWs servers: - url: wss://api.telnyx.com/v2 description: Telnyx API v2 (WebSocket) tags: - Speech To Text over WebSockets parameters: - $ref: '#/components/parameters/transcription_engine' - $ref: '#/components/parameters/input_format' - $ref: '#/components/parameters/sample_rate' - $ref: '#/components/parameters/language' - $ref: '#/components/parameters/interim_results' - $ref: '#/components/parameters/model' - $ref: '#/components/parameters/endpointing' - $ref: '#/components/parameters/redact' - $ref: '#/components/parameters/keyterm' - $ref: '#/components/parameters/keywords' requestBody: description: Client sends binary audio frames (mp3, wav, linear16, or linear32 format, per `input_format`) over the WebSocket. See `SttClientEvent` schema. content: application/octet-stream: schema: $ref: '#/components/schemas/SttClientEvent' responses: '101': description: 'WebSocket connection established. Communication proceeds via binary audio frames (client) and JSON transcript frames (server). **Client → Server:** Binary audio data (mp3, wav, linear16, or linear32, per `input_format`). **Server → Client:** See `TranscriptFrame` and `SttErrorFrame` schemas.' content: application/json: schema: $ref: '#/components/schemas/SttServerEvent' '200': description: WebSocket upgrade successful — this response is not returned directly. See 101 for frame documentation. '400': description: Invalid parameters — engine not supported or missing required fields. '401': description: Authentication failed — missing or invalid Authorization header. '422': $ref: '#/components/responses/speech-to-text_UnprocessableEntityResponse' x-latency-category: interactive /spend_limits: get: summary: List spend limits description: 'Returns one entry per product and period you can set a limit on, with the limit, the spend so far in the period and whether the product is blocked. An entry without a limit is still listed (`limit: null`). When the spend cannot be read, the entry is returned with `spend_usd: null` and `spend_error` set. The list is not paginated.' 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’s “presigned” URL. Please note that Telnyx performs authentication differently from AWS S3 and you MUST\ \ NOT use the presign method of AWS s3api CLI or SDK to generate the presigned URL. \n\nRefer to: https://developers.telnyx.com/docs/cloud-storage/presigned-urls\n" operationId: CreatePresignedObjectUrl tags: - Presigned Object URLs parameters: - name: bucketName in: path description: The name of the bucket required: true example: '' schema: type: string - name: objectName in: path description: The name of the object required: true example: '' schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PresignedObjectUrlParams' responses: '200': description: Presigned URL Object Response content: application/json: schema: $ref: '#/components/schemas/PresignedObjectUrl' example: content: token: string presigned_url: string expires_at: '2024-01-23T18:10:02.574Z' headers: {} '401': description: Unauthorized '404': description: Bucket or object not found '422': description: Unprocessable Entity /storage/cloudfs: get: description: 'Lists the CloudFS filesystems for the authenticated user''s organization. Results use cursor-based pagination: fetch the next page by passing `meta.cursors.after` as `page[after]`, or follow the `meta.next` URL.' tags: - cloudfs filesystems summary: List CloudFS filesystems operationId: ListCloudfsFilesystems parameters: - description: The number of filesystems to return per page. Values above 250 are treated as 250. name: page[limit] in: query schema: type: integer minimum: 1 maximum: 250 default: 20 - description: Opaque cursor from a previous response's `meta.cursors.after`; returns the page after it. Mutually exclusive with `page[before]`. name: page[after] in: query schema: type: string - description: Opaque cursor from a previous response's `meta.cursors.before`; returns the page before it. Mutually exclusive with `page[after]`. name: page[before] in: query schema: type: string - description: Return only the filesystem whose name matches exactly. name: filter[name] in: query schema: type: string - description: Return only filesystems with this status. Unrecognized values are ignored. name: filter[status] in: query schema: type: string enum: - provisioning - ready - needs_format - deleting - failed - description: Return only filesystems in this region. name: filter[region] in: query schema: type: string example: us-east-1 - description: 'Sort order for the results: a field name for ascending, or the field name prefixed with `-` for descending.' name: sort in: query schema: type: string enum: - created_at - -created_at - updated_at - -updated_at - name - -name default: -created_at responses: '200': description: CloudFS filesystems retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CloudfsFilesystemListResponseWrapper' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unprocessable entity — invalid `page[limit]`, malformed or conflicting cursor, or unsupported `sort` value content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' post: description: 'Creates a CloudFS filesystem. Provisioning is synchronous — typically a few seconds, up to a few minutes — and the filesystem is returned with status `ready`, together with its S3 bucket and metadata connection details. This response is the only time the filesystem''s `meta_token` — and the credential-bearing `meta_url` — are returned; store them securely. If the token is lost, issue a new one with the rotate-meta-token action. Names are unique within your organization: creating with an existing name returns a `422`. Requests are idempotent: retrying with the same `Idempotency-Key` within 24 hours replays the original response instead of creating another filesystem.' tags: - cloudfs filesystems summary: Create a CloudFS filesystem operationId: CreateCloudfsFilesystem parameters: - description: 'Unique key that makes the request idempotent (1-255 characters: letters, numbers, `_`, and `-`). Retrying with the same key within 24 hours replays the original response (marked with an `Idempotent-Replayed: true` header) instead of repeating the action. Reusing a key with a different request returns a `422`; sending a key while the original request is still being processed returns a `409`.' name: Idempotency-Key in: header required: true schema: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_-]+$ requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCloudfsFilesystemRequest' description: CloudFS filesystem creation request required: true responses: '201': description: CloudFS filesystem created successfully. This is the only response (besides rotate-meta-token) that includes `meta_token`. headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' content: application/json: schema: $ref: '#/components/schemas/CloudfsFilesystemResponseWrapper' '400': description: Bad request — malformed JSON, unknown field, or a missing or invalid `Idempotency-Key` header content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — a request with this `Idempotency-Key` is still being processed content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unprocessable entity — missing or invalid `name` or `region`, a filesystem with this name already exists for your organization, or the `Idempotency-Key` was already used for a different request content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/cloudfs/{id}: delete: description: 'Permanently deletes a CloudFS filesystem, removing its S3 bucket and its metadata database. Deletion is synchronous: the response returns the filesystem''s final state with status `deleted`. There is no restore. A filesystem that is still `provisioning` returns a `409`. If the filesystem still contains data, the request may be rejected with a `409` — drain the bucket and retry.' tags: - cloudfs filesystems summary: Delete a CloudFS filesystem operationId: DeleteCloudfsFilesystem parameters: - description: CloudFS filesystem ID name: id in: path required: true schema: type: string format: uuid responses: '200': description: CloudFS filesystem deleted; the returned filesystem has status `deleted` content: application/json: schema: $ref: '#/components/schemas/CloudfsFilesystemDetailResponseWrapper' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: CloudFS filesystem not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the filesystem is not in a state that allows deletion (for example, still `provisioning`), or its bucket still contains data that must be drained first content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unprocessable entity — `id` is not a valid UUID content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' get: description: Retrieves a CloudFS filesystem by its ID. The returned `meta_url` omits the credential — the metadata token is only ever returned by create and rotate-meta-token. A filesystem whose last lifecycle action failed includes a customer-safe `error` message. tags: - cloudfs filesystems summary: Get a CloudFS filesystem operationId: GetCloudfsFilesystem parameters: - description: CloudFS filesystem ID name: id in: path required: true schema: type: string format: uuid responses: '200': description: CloudFS filesystem retrieved successfully content: application/json: schema: $ref: '#/components/schemas/CloudfsFilesystemDetailResponseWrapper' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: CloudFS filesystem not found content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unprocessable entity — `id` is not a valid UUID content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' patch: description: Updates a CloudFS filesystem. Only `name` can be changed; other fields are immutable and unknown fields are rejected with a `400`. Renaming to a name that already exists in your organization returns a `422`. tags: - cloudfs filesystems summary: Update a CloudFS filesystem operationId: UpdateCloudfsFilesystem parameters: - description: CloudFS filesystem ID name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateCloudfsFilesystemRequest' description: CloudFS filesystem update request required: true responses: '200': description: CloudFS filesystem updated successfully content: application/json: schema: $ref: '#/components/schemas/CloudfsFilesystemDetailResponseWrapper' '400': description: Bad request — malformed JSON, unknown or immutable field, or missing body content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: CloudFS filesystem not found content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unprocessable entity — `id` is not a valid UUID, the new `name` is invalid, or a filesystem with that name already exists content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/cloudfs/{id}/actions/rotate-meta-token: post: description: Issues a new metadata access token for the filesystem and returns the full filesystem, including the new `meta_token` and credential-bearing `meta_url`. The previous token stops authenticating immediately; the metadata database and S3 bucket are unchanged. The request takes no body. Allowed while the filesystem is `ready` or `needs_format`; otherwise returns a `409`. Retrying with the same `Idempotency-Key` within 24 hours replays the original response — including the same token — instead of rotating again. tags: - cloudfs filesystems summary: Rotate the metadata token operationId: RotateCloudfsMetaToken parameters: - description: CloudFS filesystem ID name: id in: path required: true schema: type: string format: uuid - description: 'Unique key that makes the request idempotent (1-255 characters: letters, numbers, `_`, and `-`). Retrying with the same key within 24 hours replays the original response (marked with an `Idempotent-Replayed: true` header) instead of repeating the action. Reusing a key with a different request returns a `422`; sending a key while the original request is still being processed returns a `409`.' name: Idempotency-Key in: header required: true schema: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_-]+$ responses: '200': description: New metadata token issued; the response includes the new `meta_token` and credential-bearing `meta_url` headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' content: application/json: schema: $ref: '#/components/schemas/CloudfsFilesystemResponseWrapper' '400': description: Bad request — missing or invalid `Idempotency-Key` header content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: CloudFS filesystem not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the filesystem is not in a state that allows rotation (`status` is neither `ready` nor `needs_format`), or a request with this `Idempotency-Key` is still being processed content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unprocessable entity — `id` is not a valid UUID, or the `Idempotency-Key` was already used for a different request content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/kvs: get: description: Lists the KV namespaces for the authenticated user's organization. Results use page-based pagination (`page[number]`/`page[size]`). tags: - kv namespaces summary: List KV namespaces operationId: ListKvNamespaces parameters: - description: The page number to load. name: page[number] in: query schema: type: integer minimum: 1 default: 1 - description: The size of the page. Values above 250 are treated as 250. name: page[size] in: query schema: type: integer minimum: 1 maximum: 250 default: 20 responses: '200': description: KV namespaces retrieved successfully content: application/json: schema: $ref: '#/components/schemas/KvNamespaceListResponseWrapper' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' post: description: 'Creates a new KV namespace. Provisioning is asynchronous: the namespace is returned with status `pending` and becomes usable once it reaches `provision_ok`.' tags: - kv namespaces summary: Create a KV namespace operationId: CreateKvNamespace requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateKvNamespaceRequest' description: KV namespace creation request required: true responses: '201': description: KV namespace created successfully content: application/json: schema: $ref: '#/components/schemas/KvNamespaceResponseWrapper' '400': description: Bad request — missing or invalid `name` content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — a namespace with this name already exists for your organization content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/kvs/{id}: delete: description: 'Deletes a KV namespace and all of the keys it contains. Deletion is asynchronous: the namespace is returned with status `deleting`. Deleting a namespace whose deletion is already in progress returns a `409`.' tags: - kv namespaces summary: Delete a KV namespace operationId: DeleteKvNamespace parameters: - description: KV namespace ID name: id in: path required: true schema: type: string format: uuid responses: '200': description: KV namespace deletion initiated content: application/json: schema: $ref: '#/components/schemas/KvNamespaceResponseWrapper' '400': description: Bad request — `id` is not a valid UUID content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: KV namespace not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the namespace is already being deleted content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' get: description: Retrieves a KV namespace by its ID, including its provisioning status. tags: - kv namespaces summary: Get a KV namespace operationId: GetKvNamespace parameters: - description: KV namespace ID name: id in: path required: true schema: type: string format: uuid responses: '200': description: KV namespace retrieved successfully content: application/json: schema: $ref: '#/components/schemas/KvNamespaceResponseWrapper' '400': description: Bad request — `id` is not a valid UUID content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: KV namespace not found content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/kvs/{id}/keys: get: description: Lists the keys in a namespace. Returns key names and metadata only, never values. Results are paginated with `limit` and an opaque `cursor`. tags: - kv keys summary: List keys operationId: ListKvKeys parameters: - description: KV namespace ID name: id in: path required: true schema: type: string format: uuid - description: Return only keys that start with this prefix. name: prefix in: query schema: type: string - description: Maximum number of keys to return. Values above 1000 are treated as 1000. name: limit in: query schema: type: integer minimum: 1 maximum: 1000 default: 1000 - description: Opaque pagination cursor from a previous response's `meta.cursor`. name: cursor in: query schema: type: string responses: '200': description: Keys retrieved successfully content: application/json: schema: $ref: '#/components/schemas/KvKeyListResponseWrapper' '400': description: Bad request — `id` is not a valid UUID, or `limit` is not a positive integer content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: KV namespace not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the namespace is not ready (`status` is not `provision_ok`) content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/kvs/{id}/keys/{key}: delete: description: 'Deletes a key. Idempotent: deleting a key that does not exist still succeeds. The namespace itself must exist and be provisioned.' tags: - kv keys summary: Delete a key operationId: DeleteKvKey parameters: - description: KV namespace ID name: id in: path required: true schema: type: string format: uuid - description: 'Key name. Allowed characters: `a-z A-Z 0-9 - _ / = .`; maximum 256 characters; names starting with `_` are reserved for system use. May contain `/`. When calling the HTTP API directly, URL-encode the key so the whole string is treated as one key (for example `user/1` -> `user%2F1`). SDK users should pass the key raw - SDKs URL-encode path parameters automatically.' name: key in: path required: true schema: type: string maxLength: 256 pattern: ^[-/_=.a-zA-Z0-9]+$ responses: '200': description: Key deleted (returned even if the key did not exist) '400': description: Bad request — invalid `id` or key name content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: KV namespace not found (a missing key is not an error) content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the namespace is not ready (`status` is not `provision_ok`) content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' get: description: Returns the raw stored value for a key. The response body is the value exactly as it was written; the `Content-Type` header echoes the value's stored content type (defaults to `application/octet-stream`). tags: - kv keys summary: Get a key's value operationId: GetKvKey parameters: - description: KV namespace ID name: id in: path required: true schema: type: string format: uuid - description: 'Key name. Allowed characters: `a-z A-Z 0-9 - _ / = .`; maximum 256 characters; names starting with `_` are reserved for system use. May contain `/`. When calling the HTTP API directly, URL-encode the key so the whole string is treated as one key (for example `user/1` -> `user%2F1`). SDK users should pass the key raw - SDKs URL-encode path parameters automatically.' name: key in: path required: true schema: type: string maxLength: 256 pattern: ^[-/_=.a-zA-Z0-9]+$ responses: '200': description: Value retrieved successfully. The `Content-Type` header is the value's stored content type (defaults to `application/octet-stream`). content: application/octet-stream: schema: type: string format: binary '400': description: Bad request — invalid `id` or key name content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: Key or namespace not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the namespace is not ready (`status` is not `provision_ok`) content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' put: description: Creates or replaces the value for a key. The request body is stored verbatim as the value — no base64, no JSON envelope — up to 1 MiB. The request's `Content-Type` header is stored with the value and echoed back on retrieval. Returns `201` when the key is created and `200` when an existing key is updated. tags: - kv keys summary: Set a key's value operationId: PutKvKey parameters: - description: KV namespace ID name: id in: path required: true schema: type: string format: uuid - description: 'Key name. Allowed characters: `a-z A-Z 0-9 - _ / = .`; maximum 256 characters; names starting with `_` are reserved for system use. May contain `/`. When calling the HTTP API directly, URL-encode the key so the whole string is treated as one key (for example `user/1` -> `user%2F1`). SDK users should pass the key raw - SDKs URL-encode path parameters automatically.' name: key in: path required: true schema: type: string maxLength: 256 pattern: ^[-/_=.a-zA-Z0-9]+$ - description: Time-to-live in seconds. When set, the key expires and is deleted after this duration. Requires a namespace provisioned with TTL support; namespaces without it return a `409`. name: ttl_secs in: query schema: type: integer format: int64 minimum: 1 maximum: 9223372036 requestBody: content: application/octet-stream: schema: type: string format: binary description: Raw value bytes, stored verbatim. example: my-value description: 'The value to store, sent as the raw request body. Maximum size: 1 MiB (1048576 bytes).' required: true responses: '201': description: Key created '200': description: Key updated '400': description: Bad request — invalid `id`, key name, or request body content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: KV namespace not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the namespace is not ready (`status` is not `provision_ok`), or `ttl_secs` was set on a namespace without TTL support content: application/json: schema: $ref: '#/components/schemas/Errors' '413': description: Payload too large — the value exceeds 1 MiB content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Unprocessable entity — `ttl_secs` is not a positive integer within range, or the unsupported `ttl` parameter was used content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/migration_source_coverage: get: summary: List Migration Source coverage deprecated: false description: List the external storage providers and regions supported as migration sources. operationId: ListMigrationSourceCoverage tags: - Data Migration parameters: [] responses: '200': description: List Migrations Source Coverage Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/MigrationSourceCoverageParams' meta: $ref: '#/components/schemas/PaginationMetaSimple' headers: {} '401': description: Unauthorized '422': description: Unprocessable Entity /storage/migration_sources: get: summary: List all Migration Sources deprecated: false description: List the migration sources configured on your account. A migration source is an external storage bucket from which data can be migrated into Telnyx Cloud Storage. operationId: ListMigrationSources tags: - Data Migration parameters: [] responses: '200': description: List Migration Sources Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/MigrationSourceParams' meta: $ref: '#/components/schemas/PaginationMetaSimple' headers: {} '401': description: Unauthorized '422': description: Unprocessable Entity post: summary: Create a Migration Source deprecated: false description: Create a source from which data can be migrated from. operationId: CreateMigrationSource tags: - Data Migration parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/MigrationSourceParams' example: provider: aws source_region: string provider_auth: access_key: string secret_access_key: string bucket_name: string responses: '200': description: Create Migration Source Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MigrationSourceParams' example: data: id: string provider: aws source_region: string provider_auth: access_key: string secret_access_key: string bucket_name: string headers: {} '401': description: Unauthorized '422': description: Unprocessable Entity /storage/migration_sources/{id}: delete: summary: Delete a Migration Source deprecated: false description: Delete a migration source configuration. operationId: DeleteMigrationSource tags: - Data Migration parameters: - name: id in: path description: Unique identifier for the data migration source. required: true example: '' schema: type: string responses: '200': description: Create Migration Source Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MigrationSourceParams' example: data: id: string provider: aws source_region: string provider_auth: access_key: string secret_access_key: string bucket_name: string headers: {} '401': description: Unauthorized '404': description: Migration source not found '422': description: Unprocessable Entity get: summary: Get a Migration Source deprecated: false description: Retrieve the details of a specific migration source. operationId: GetMigrationSource tags: - Data Migration parameters: - name: id in: path description: Unique identifier for the data migration source. required: true example: '' schema: type: string responses: '200': description: Create Migration Source Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MigrationSourceParams' example: data: id: string provider: aws source_region: string provider_auth: access_key: string secret_access_key: string bucket_name: string headers: {} '401': description: Unauthorized '404': description: Migration source not found '422': description: Unprocessable Entity /storage/migrations: get: summary: List all Migrations deprecated: false description: Retrieve a list of the storage migrations on your account. operationId: ListMigrations tags: - Data Migration parameters: [] responses: '200': description: List Migrations Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/MigrationParams' meta: $ref: '#/components/schemas/PaginationMetaSimple' headers: {} '401': description: Unauthorized '422': description: Unprocessable Entity post: summary: Create a Migration deprecated: false description: Initiate a migration of data from an external provider into Telnyx Cloud Storage. Currently, only S3 is supported. operationId: CreateMigration tags: - Data Migration parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/MigrationParams' responses: '200': description: Create Migration Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MigrationParams' headers: {} '401': description: Unauthorized '422': description: Unprocessable Entity /storage/migrations/{id}: get: summary: Get a Migration deprecated: false description: Retrieve the details and status of a specific storage migration. operationId: GetMigration tags: - Data Migration parameters: - name: id in: path description: Unique identifier for the data migration. required: true example: '' schema: type: string responses: '200': description: Create Migration Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MigrationParams' headers: {} '401': description: Unauthorized '404': description: Migration not found '422': description: Unprocessable Entity /storage/migrations/{id}/actions/stop: post: summary: Stop a Migration deprecated: false description: Stops the specified in-progress storage migration and returns the updated migration. operationId: StopMigration tags: - Data Migration parameters: - name: id in: path description: Unique identifier for the data migration. required: true example: '' schema: type: string responses: '200': description: Create Migration Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MigrationParams' headers: {} '401': description: Unauthorized '404': description: Migration not found '422': description: Unprocessable Entity /storage/sqldbs: get: description: Lists the SQL databases for the authenticated user's organization. Results use page-based pagination (`page[number]`/`page[size]`) and can be filtered and sorted. tags: - sql databases summary: List SQL databases operationId: ListSqlDatabases parameters: - description: The page number to load. name: page[number] in: query schema: type: integer minimum: 1 default: 1 - description: The size of the page. Values above 250 are treated as 250. name: page[size] in: query schema: type: integer minimum: 1 maximum: 250 default: 20 - description: Filter by exact name match. name: filter[name] in: query schema: type: string - description: Filter by provisioning status. name: filter[status] in: query schema: type: string enum: - pending - provision_ok - provision_failed - deleting - delete_failed - description: Sort field; prefix with `-` for descending order. name: sort in: query schema: type: string enum: - name - -name - status - -status - created_at - -created_at default: -created_at responses: '200': description: SQL databases retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SqlDatabaseListResponseWrapper' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Validation error — an unsupported `sort` or `filter` value content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' post: description: 'Creates a new SQL database. Provisioning is asynchronous: the database is returned with status `pending` and becomes usable once it reaches `provision_ok`.' tags: - sql databases summary: Create a SQL database operationId: CreateSqlDatabase requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSqlDatabaseRequest' description: SQL database creation request required: true responses: '201': description: SQL database created successfully (status `pending`) content: application/json: schema: $ref: '#/components/schemas/SqlDatabaseResponseWrapper' '400': description: Bad request — the request body is malformed content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — a database with this name already exists for your organization content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Validation error — `name` is missing or not a valid database name content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/sqldbs/{id}: delete: description: Deletes a SQL database and all of the data it holds. Deletion is asynchronous and returns `202` with an empty body — the record is not removed synchronously. Poll `GET /storage/sqldbs/{id}`, which returns `404` once the database has been purged; there is no durable `deleted` state. A database still bound by a function is refused with `409` unless `force=true`. tags: - sql databases summary: Delete a SQL database operationId: DeleteSqlDatabase parameters: - description: SQL database ID name: id in: path required: true schema: type: string format: uuid - description: Delete the database even when functions still bind it. Their bindings stop resolving. name: force in: query schema: type: boolean default: false responses: '202': description: Accepted — deletion runs asynchronously. The body is empty; poll `GET /storage/sqldbs/{id}` until it returns `404`. '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: SQL database not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the database is already being deleted, or is still bound by one or more functions content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Validation error — `id` is not a valid identifier content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' '503': description: Cannot verify whether the database is still in use; retry, or pass `force=true` content: application/json: schema: $ref: '#/components/schemas/Errors' get: description: Retrieves a SQL database by its ID, including its provisioning status. tags: - sql databases summary: Get a SQL database operationId: GetSqlDatabase parameters: - description: SQL database ID name: id in: path required: true schema: type: string format: uuid responses: '200': description: SQL database retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SqlDatabaseResponseWrapper' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: SQL database not found content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: Validation error — `id` is not a valid identifier content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /storage/sqldbs/{id}/actions/query: post: description: Runs SQL against the database and returns the resulting rows — empty for statements that return none, such as DDL. Bind positional `?` placeholders with `params` rather than interpolating values into the SQL string. tags: - sql databases summary: Run SQL against a SQL database operationId: QuerySqlDatabase parameters: - description: SQL database ID name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/SqlDatabaseQueryRequest' description: The SQL to run, and any positional bind parameters required: true responses: '200': description: The SQL result content: application/json: schema: $ref: '#/components/schemas/SqlDatabaseQueryResponseWrapper' '400': description: Bad request — the request body is malformed content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: SQL database not found content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict — the database is not ready yet. This is transient; retry once it reaches `provision_ok`. content: application/json: schema: $ref: '#/components/schemas/Errors' '413': description: The SQL body exceeds the maximum size (8 MiB) content: application/json: schema: $ref: '#/components/schemas/Errors' '422': description: 'Validation error — an invalid `id`, empty `sql`, an unsupported bind parameter, the wrong number of bind parameters for the placeholders in `sql`, or a SQL error raised by the database. Also returned for a script over roughly 4 MiB, whose detail ends in `stream too large`: that transport ceiling is reached before the 8 MiB `413`, so ~4 MiB is the size to plan against' content: application/json: schema: $ref: '#/components/schemas/Errors' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/GenericErrorResponse' /sub_number_orders: get: summary: List sub number orders description: Get a paginated list of sub number orders. operationId: ListSubNumberOrders tags: - Phone Number Orders x-group-parameters: 'true' parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[order_request_id], filter[country_code], filter[phone_number_type], filter[phone_numbers_count], filter[include_phone_numbers]' schema: type: object properties: status: type: string description: Filter sub number orders by status. order_request_id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c293 description: ID of the number order the sub number order belongs to country_code: type: string example: US description: ISO alpha-2 country code. phone_number_type: type: string example: local description: Phone Number Type phone_numbers_count: type: integer example: 1 description: Amount of numbers in the sub number order include_phone_numbers: type: boolean default: false description: Include the first 50 phone number objects in the results, including their per-number regulatory requirement statuses responses: '200': description: Successful response with a list of sub number orders. content: application/json: schema: type: object title: List Sub Number Orders Response properties: data: type: array items: $ref: '#/components/schemas/numbers_SubNumberOrder' meta: $ref: '#/components/schemas/PaginationMeta' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /sub_number_orders/report: post: summary: Create a sub number orders report description: Create a CSV report for sub number orders. The report will be generated asynchronously and can be downloaded once complete. operationId: CreateSubNumberOrdersReport tags: - Phone Number Orders x-endpoint-cost: medium x-latency-category: background requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/CreateSubNumberOrdersReportRequest' responses: '202': description: Report generation accepted. Poll GET /sub_number_orders/report/{report_id} with the returned report id until the report is ready. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SubNumberOrdersReport' '400': $ref: '#/components/responses/numbers_BadRequestResponse' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse' '422': $ref: '#/components/responses/numbers_UnprocessableEntity' '500': $ref: '#/components/responses/numbers_GenericErrorResponse' /sub_number_orders/report/{report_id}: get: summary: Retrieve a sub number orders report description: Get the status and details of a sub number orders report. operationId: GetSubNumberOrdersReport tags: - Phone Number Orders x-endpoint-cost: light parameters: - in: path name: report_id schema: type: string format: uuid required: true description: The unique identifier of the sub number orders report example: 12ade33a-21c0-473b-b055-b3c836e1c293 responses: '200': description: Sub number orders report response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SubNumberOrdersReport' '400': $ref: '#/components/responses/numbers_BadRequestResponse' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse' '404': $ref: '#/components/responses/numbers_NotFoundResponse' '422': $ref: '#/components/responses/numbers_UnprocessableEntity' '500': $ref: '#/components/responses/numbers_GenericErrorResponse' x-latency-category: responsive /sub_number_orders/report/{report_id}/download: get: summary: Download a sub number orders report description: Download the CSV file for a completed sub number orders report. The report status must be 'success' before the file can be downloaded. operationId: DownloadSubNumberOrdersReport tags: - Phone Number Orders x-endpoint-cost: light x-latency-category: background parameters: - in: path name: report_id schema: type: string format: uuid required: true description: The unique identifier of the sub number orders report example: 12ade33a-21c0-473b-b055-b3c836e1c293 responses: '200': description: CSV file download content: text/csv: schema: type: string format: binary example: 'id,order_request_id,is_block_sub_number_order,status,phone_number_type,requirements_met,phone_numbers_count,country_code,user_id,customer_reference,created_at,updated_at 1758d6ed-61a0-4d7a-bf57-b5dced413d33,f486fc2c-4fdf-4849-930d-b3045373e839,False,success,local,True,1,US,0d7ef697-df19-413a-b724-56b0539f5397,STRING,2025-05-23 14:33:12.376686,2025-05-23 14:33:15.624916' '400': $ref: '#/components/responses/numbers_BadRequestResponse' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse' '404': $ref: '#/components/responses/numbers_NotFoundResponse' '422': $ref: '#/components/responses/numbers_UnprocessableEntity' '500': $ref: '#/components/responses/numbers_GenericErrorResponse' /sub_number_orders/{id}/requirement_group: post: summary: Update requirement group for a sub number order operationId: updateSubNumberOrderRequirementGroup tags: - Requirement Groups parameters: - name: id in: path description: The ID of the sub number order required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object required: - requirement_group_id properties: requirement_group_id: type: string format: uuid description: The ID of the requirement group to associate example: requirement_group_id: a4b201f9-8646-4e54-a7d2-b2e403eeaf8c responses: '200': description: Sub number order requirement group updated successfully content: application/json: schema: $ref: '#/components/schemas/SubNumberOrderRequirementGroupResponse' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' description: Associates an existing requirement group with the specified sub number order. The response contains the updated sub number order requirement-group relationship. /sub_number_orders/{sub_number_order_id}: get: summary: Retrieve a sub number order description: Returns the details of an existing sub number order, with support for filtering. operationId: GetSubNumberOrder tags: - Phone Number Orders parameters: - name: sub_number_order_id in: path description: The sub number order ID. required: true schema: type: string - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[include_phone_numbers]' schema: type: object properties: include_phone_numbers: type: boolean default: false description: Include the first 50 phone number objects in the results responses: '200': description: Successful response with details about a sub number order. content: application/json: schema: type: object title: Sub Number Order Response properties: data: $ref: '#/components/schemas/numbers_SubNumberOrder' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update a sub number order's requirements description: Updates the requirements of an existing sub number order and returns the updated order. operationId: UpdateSubNumberOrder tags: - Phone Number Orders parameters: - name: sub_number_order_id in: path description: The sub number order ID. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateSubNumberOrderRequest' responses: '200': description: Successful response with details about a sub number order. content: application/json: schema: type: object title: Sub Number Order Response properties: data: $ref: '#/components/schemas/numbers_SubNumberOrder' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /sub_number_orders/{sub_number_order_id}/cancel: patch: summary: Cancel a sub number order description: Allows you to cancel a sub number order in 'pending' status. operationId: CancelSubNumberOrder tags: - Phone Number Orders parameters: - name: sub_number_order_id in: path description: The ID of the sub number order. required: true schema: type: string responses: '200': description: Successful response with details about a sub number order. content: application/json: schema: type: object title: Sub Number Order Response properties: data: $ref: '#/components/schemas/numbers_SubNumberOrder' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /sub_number_orders_report: post: summary: Create a sub number orders report description: Create a CSV report for sub number orders. The report will be generated asynchronously and can be downloaded once complete. operationId: CreateSubNumberOrdersReport tags: - Phone Number Orders x-endpoint-cost: medium x-latency-category: background requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/CreateSubNumberOrdersReportRequest' responses: '202': description: Report generation accepted. Poll GET /sub_number_orders_report/{report_id} with the returned report id until the report is ready. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SubNumberOrdersReport' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /sub_number_orders_report/{report_id}: get: summary: Retrieve a sub number orders report description: Get the status and details of a sub number orders report. operationId: GetSubNumberOrdersReport tags: - Phone Number Orders x-endpoint-cost: light parameters: - in: path name: report_id schema: type: string format: uuid required: true description: The unique identifier of the sub number orders report example: 12ade33a-21c0-473b-b055-b3c836e1c293 responses: '200': description: Sub number orders report response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SubNumberOrdersReport' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /sub_number_orders_report/{report_id}/download: get: summary: Download a sub number orders report description: Download the CSV file for a completed sub number orders report. The report status must be 'success' before the file can be downloaded. operationId: DownloadSubNumberOrdersReport tags: - Phone Number Orders x-endpoint-cost: light x-latency-category: background parameters: - in: path name: report_id schema: type: string format: uuid required: true description: The unique identifier of the sub number orders report example: 12ade33a-21c0-473b-b055-b3c836e1c293 responses: '200': description: CSV file download content: text/csv: schema: type: string format: binary example: 'id,order_request_id,is_block_sub_number_order,status,phone_number_type,requirements_met,phone_numbers_count,country_code,user_id,customer_reference,created_at,updated_at 1758d6ed-61a0-4d7a-bf57-b5dced413d33,f486fc2c-4fdf-4849-930d-b3045373e839,False,success,local,True,1,US,0d7ef697-df19-413a-b724-56b0539f5397,STRING,2025-05-23 14:33:12.376686,2025-05-23 14:33:15.624916' '400': $ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53' '401': $ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53' '404': $ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53' '422': $ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53' '500': $ref: '#/components/responses/GenericErrorResponse' /telephony_credentials: get: description: Returns a paginated list of the on-demand telephony credentials on your account, with support for filtering. summary: List all credentials operationId: FindTelephonyCredentials tags: - Credentials x-group-parameters: 'true' parameters: - $ref: '#/components/parameters/telephony-credentials_PageConsolidated' - $ref: '#/components/parameters/telephony-credentials_FilterConsolidated' responses: '200': description: Successful response with multiple credentials content: application/json: schema: type: object title: Get All Telephony Credential Response properties: data: type: array items: $ref: '#/components/schemas/TelephonyCredential' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found post: description: Creates a new on-demand telephony credential for the specified connection. The credential can then be used to generate access tokens for SIP or WebRTC clients. summary: Create a credential operationId: CreateTelephonyCredential tags: - Credentials parameters: [] requestBody: description: Parameters that can be defined during credential creation required: true content: application/json: schema: $ref: '#/components/schemas/TelephonyCredentialCreateRequest' responses: '201': description: Successful response with details about a credential content: application/json: schema: type: object title: Telephony Credential Response properties: data: $ref: '#/components/schemas/TelephonyCredential' '422': description: Bad request /telephony_credentials/{id}: delete: description: Permanently deletes the specified telephony credential, revoking any access it provided. summary: Delete a credential operationId: DeleteTelephonyCredential tags: - Credentials parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string responses: '200': description: Successful response with details about a credential content: application/json: schema: type: object title: Telephony Credential Response properties: data: $ref: '#/components/schemas/TelephonyCredential' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request get: description: Get the details of an existing On-demand Credential. summary: Get a credential operationId: GetTelephonyCredential tags: - Credentials parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string responses: '200': description: Successful response with details about a credential content: application/json: schema: type: object title: Telephony Credential Response properties: data: $ref: '#/components/schemas/TelephonyCredential' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found patch: description: Updates the specified telephony credential and returns the updated credential. summary: Update a credential operationId: UpdateTelephonyCredential tags: - Credentials parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string requestBody: description: Parameters that can be updated in a credential required: true content: application/json: schema: $ref: '#/components/schemas/TelephonyCredentialUpdateRequest' responses: '200': description: Successful response with details about a credential content: application/json: schema: type: object title: Telephony Credential Response properties: data: $ref: '#/components/schemas/TelephonyCredential' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request /telephony_credentials/{id}/token: post: description: Create an Access Token (JWT) for the credential. summary: Create an Access Token. operationId: CreateTelephonyCredentialToken tags: - Access Tokens parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string - $ref: '#/components/parameters/telephony-credentials_IdempotencyKey' responses: '201': description: JWT headers: Idempotent-Replayed: $ref: '#/components/headers/IdempotentReplayed' content: text/plain: schema: type: string example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ '400': description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015. content: application/json: schema: $ref: '#/components/schemas/telephony-credentials_ErrorResponse' '404': description: Resource not Found '409': $ref: '#/components/responses/IdempotencyConflictResponse' '422': description: Validation failed. Reusing an Idempotency-Key with a different request also returns 422 (10027). content: application/json: schema: $ref: '#/components/schemas/telephony-credentials_ErrorResponse' '503': description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/telephony-credentials_ErrorResponse' /terms_of_service/agreements: get: summary: List the calling user's Terms of Service agreements description: 'Returns the Terms of Service agreements the authenticated user has on file. Each entry records the version agreed to and when. Most users only have one agreement per product, but if the ToS is updated and the user re-agrees a new entry is added. Results are paginated with the standard `page[number]` / `page[size]` parameters; the response uses the standard `{data, meta}` JSON:API envelope. By default this returns agreements for **all** products the user has agreed to. Pass the `product_type` query parameter to scope the result to a single product.' operationId: listTermsOfServiceAgreements tags: - Terms of Service parameters: - name: product_type in: query required: false description: Optional filter. Omit to list the user's agreements for **every** product (branded_calling and number_reputation); pass a value to return only that product's agreements. schema: $ref: '#/components/schemas/TosProductType' example: branded_calling - $ref: '#/components/parameters/BcPageNumber' - $ref: '#/components/parameters/BcPageSize' responses: '200': description: Paginated list of agreements. content: application/json: schema: $ref: '#/components/schemas/TosAgreementList' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /terms_of_service/agreements/{agreement_id}: get: summary: Get a Terms of Service agreement by id description: Retrieve a single ToS agreement record. Returns `404` if the agreement does not exist or does not belong to the authenticated user. operationId: getTermsOfServiceAgreement tags: - Terms of Service parameters: - name: agreement_id in: path description: Unique identifier of the agreement. required: true schema: type: string format: uuid example: 550e8400-e29b-41d4-a716-446655440000 responses: '200': description: Agreement. content: application/json: schema: $ref: '#/components/schemas/TosAgreementWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /terms_of_service/branded_calling/agree: post: summary: Agree to the Branded Calling Terms of Service description: 'Records the authenticated user''s agreement to the current Branded Calling ToS. No body required. Idempotent - re-calling after agreement is a no-op and returns the existing agreement. This is a prerequisite for activating Branded Calling on any enterprise (`POST /enterprises/{id}/branded_calling`); without an agreement, activation returns `403`.' operationId: agreeToBrandedCallingTos tags: - Terms of Service responses: '201': description: Agreement recorded. content: application/json: schema: $ref: '#/components/schemas/TosAgreementWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /terms_of_service/info: get: summary: Get Terms of Service information description: Returns the available Terms of Service agreements (product, current version, terms URL, effective date). Omit `product_type` to return all products; pass it to scope to one. operationId: getTermsOfServiceInfo tags: - Terms of Service parameters: - name: product_type in: query required: false description: Optional product filter. Omit to return info for all products. schema: $ref: '#/components/schemas/TosProductType' example: branded_calling responses: '200': description: Terms of Service information. content: application/json: schema: $ref: '#/components/schemas/TermsOfServiceInfo' '401': $ref: '#/components/responses/branded-calling_GenericErrorResponse' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /terms_of_service/number_reputation/agree: post: summary: Agree to the Phone Number Reputation Terms of Service description: 'Records the authenticated user''s agreement to the current Phone Number Reputation ToS. No body required. Idempotent. Prerequisite for using any of the `/v2/.../reputation/*` endpoints.' operationId: agreeNumberReputationTermsOfService tags: - Terms of Service responses: '201': description: Agreement recorded. content: application/json: schema: $ref: '#/components/schemas/TosAgreementWrapped' default: $ref: '#/components/responses/number-reputation_GenericErrorResponse' 4XX: $ref: '#/components/responses/number-reputation_GenericErrorResponse' /terms_of_service/status: get: summary: Get the calling user's Terms of Service status description: 'Returns whether the authenticated user has agreed to the current Terms of Service for the product given by `product_type`. Used during onboarding to decide whether to prompt the user with the ToS dialog before continuing. `agreement_required: true` means the user has not yet agreed (or has agreed to an outdated version) and must agree before using that product''s endpoints.' operationId: getTermsOfServiceStatus tags: - Terms of Service parameters: - name: product_type in: query required: false description: Which product's ToS to check. Defaults to `branded_calling`. schema: $ref: '#/components/schemas/TosProductType' responses: '200': description: Status. content: application/json: schema: $ref: '#/components/schemas/TosStatusWrapped' default: $ref: '#/components/responses/branded-calling_GenericErrorResponse' 4XX: $ref: '#/components/responses/branded-calling_GenericErrorResponse' /texml/Accounts/{account_sid}/Calls: get: summary: Fetch multiple call resources description: Returns multiple call resouces for an account. This endpoint is eventually consistent. x-latency-category: responsive operationId: GetTexmlCalls tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageToken' - $ref: '#/components/parameters/To' - $ref: '#/components/parameters/From' - $ref: '#/components/parameters/Status' - $ref: '#/components/parameters/StartTime' - $ref: '#/components/parameters/StartTime_gt' - $ref: '#/components/parameters/StartTime_lt' - $ref: '#/components/parameters/EndTime' - $ref: '#/components/parameters/EndTime_gt' - $ref: '#/components/parameters/EndTime_lt' responses: '200': description: Multiple call resources. content: application/json: schema: $ref: '#/components/schemas/CallResourceIndex' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Initiate an outbound call description: Initiate an outbound TeXML call. Telnyx will request TeXML from the XML Request URL configured for the TeXML Application in the Mission Control Portal. x-latency-category: responsive x-group-parameters: 'true' operationId: InitiateTexmlCall tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' requestBody: description: Initiate Call request object required: true content: application/json: schema: $ref: '#/components/schemas/InitiateCallRequest' responses: '200': description: Successful response upon initiating a TeXML call. content: application/json: schema: $ref: '#/components/schemas/InitiateCallResult' '422': $ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83' '429': $ref: '#/components/responses/call-scripting_TooManyRequestsResponse' default: $ref: '#/components/responses/call-scripting_GenericErrorResponse' /texml/Accounts/{account_sid}/Calls/{call_sid}: get: summary: Fetch a call description: Returns an individual call identified by its CallSid. This endpoint is eventually consistent. x-latency-category: responsive operationId: GetTexmlCall tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/CallSid' - $ref: '#/components/parameters/AccountSid' responses: '200': description: Call resource. content: application/json: schema: $ref: '#/components/schemas/CallResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Update call description: Update TeXML call. Please note that the keys present in the payload MUST BE formatted in CamelCase as specified in the example. x-latency-category: responsive x-group-parameters: 'true' operationId: UpdateTexmlCall tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/CallSid' - $ref: '#/components/parameters/AccountSid' requestBody: description: Update Call request object required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UpdateCallRequest' responses: '200': description: Call resource. content: application/json: schema: $ref: '#/components/schemas/CallResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' '422': $ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83' /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json: get: summary: Fetch recordings for a call description: Returns recordings for a call identified by call_sid. x-latency-category: responsive x-group-parameters: 'true' operationId: FetchTeXMLCallRecordings tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/CallSid' responses: '200': description: Successful Get Call Recordings Response content: application/json: schema: $ref: '#/components/schemas/TexmlGetCallRecordingsResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Request recording for a call description: Starts recording with specified parameters for call idientified by call_sid. x-latency-category: responsive x-group-parameters: 'true' operationId: StartTeXMLCallRecording tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/CallSid' requestBody: $ref: '#/components/requestBodies/TexmlCreateCallRecordingRequest' responses: '200': description: Successful call recording create response content: application/json: schema: $ref: '#/components/schemas/TexmlCreateCallRecordingResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings/{recording_sid}.json: post: summary: Update recording on a call description: Updates recording resource for particular call. x-latency-category: responsive x-group-parameters: 'true' operationId: UpdateTeXMLCallRecording tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/CallSid' - $ref: '#/components/parameters/RecordingSid' requestBody: $ref: '#/components/requestBodies/TexmlUpdateCallRecordingRequest' responses: '200': description: Successful call recording create response content: application/json: schema: $ref: '#/components/schemas/TexmlCreateCallRecordingResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json: post: summary: Request siprec session for a call description: Starts siprec session with specified parameters for call idientified by call_sid. x-latency-category: responsive x-group-parameters: 'true' operationId: StartTeXMLSiprecSession tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/CallSid' requestBody: $ref: '#/components/requestBodies/TexmlCreateSiprecSessionRequest' responses: '200': description: Successful SIPREC session create response content: application/json: schema: $ref: '#/components/schemas/TexmlCreateSiprecSessionResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec/{siprec_sid}.json: post: summary: Updates siprec session for a call description: Updates siprec session identified by siprec_sid. x-latency-category: responsive x-group-parameters: 'true' operationId: UpdateTeXMLSiprecSession tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/CallSid' - $ref: '#/components/parameters/SiprecSid' requestBody: $ref: '#/components/requestBodies/TexmlUpdateSiprecSessionRequest' responses: '200': description: Successful SIPREC session update response content: application/json: schema: $ref: '#/components/schemas/TexmlUpdateSiprecSessionResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json: post: summary: Start streaming media from a call. description: Starts streaming media from a call to a specific WebSocket address. x-latency-category: responsive x-group-parameters: 'true' operationId: StartTeXMLCallStreaming tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/CallSid' requestBody: $ref: '#/components/requestBodies/TexmlCreateCallStreamingRequest' responses: '200': description: Successful call streaming create response content: application/json: schema: $ref: '#/components/schemas/TexmlCreateCallStreamingResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams/{streaming_sid}.json: post: summary: Update streaming on a call description: Updates streaming resource for particular call. x-latency-category: responsive x-group-parameters: 'true' operationId: UpdateTeXMLCallStreaming tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/CallSid' - $ref: '#/components/parameters/StreamingSid' requestBody: $ref: '#/components/requestBodies/TexmlUpdateCallStreamingRequest' responses: '200': description: Successful call streaming update response content: application/json: schema: $ref: '#/components/schemas/TexmlUpdateCallStreamingResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Conferences: get: summary: List conference resources description: Returns a paginated list of conference resources for the account, with support for filtering by friendly name, status, and creation or update dates. x-latency-category: responsive operationId: GetTexmlConferences tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageToken' - $ref: '#/components/parameters/FriendlyName' - $ref: '#/components/parameters/ConferenceStatus' - $ref: '#/components/parameters/DateCreated' - $ref: '#/components/parameters/DateUpdated' responses: '200': description: Multiple conference resources. content: application/json: schema: $ref: '#/components/schemas/ConferenceResourceIndex' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Conferences/{conference_sid}: get: summary: Fetch a conference resource description: Returns a single conference resource for the account by its ConferenceSid. x-latency-category: responsive operationId: GetTexmlConference tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' responses: '200': description: Conference resource. content: application/json: schema: $ref: '#/components/schemas/ConferenceResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Update a conference resource description: Updates the specified conference resource, for example to modify its status, and returns the updated conference. x-latency-category: responsive operationId: UpdateTexmlConference tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' requestBody: description: Update Conference request object required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/call-scripting_UpdateConferenceRequest_c75353cb83' responses: '200': description: Conference resource. content: application/json: schema: $ref: '#/components/schemas/ConferenceResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants: get: summary: List conference participants description: Returns the list of participants currently in the specified conference. x-latency-category: responsive operationId: GetTexmlConferenceParticipants tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' responses: '200': description: Multiple participant resources. content: application/json: schema: $ref: '#/components/schemas/ParticipantResourceIndex' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Dial a new conference participant description: Dials a new participant into the specified conference and returns the created participant resource. x-latency-category: responsive operationId: DialTexmlConferenceParticipant tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' requestBody: description: Dial Conference Participant request object required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DialConferenceParticipantRequest' responses: '200': description: New participant resource. content: application/json: schema: $ref: '#/components/schemas/NewParticipantResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}: delete: summary: Delete a conference participant description: Removes the specified participant from the conference, ending their leg of the call. x-latency-category: responsive operationId: DeleteTexmlConferenceParticipant tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' - $ref: '#/components/parameters/CallSidOrParticipantLabel' responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' get: summary: Get conference participant resource description: Returns a single conference participant resource by call SID or participant label. x-latency-category: responsive operationId: GetTexmlConferenceParticipant tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' - $ref: '#/components/parameters/CallSidOrParticipantLabel' responses: '200': description: Participant resource. content: application/json: schema: $ref: '#/components/schemas/ParticipantResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Update a conference participant description: Updates the specified conference participant, for example muting or holding them, and returns the updated participant. x-latency-category: responsive operationId: UpdateTexmlConferenceParticipant tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' - $ref: '#/components/parameters/CallSidOrParticipantLabel' requestBody: description: Update Conference Participant request object required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/call-scripting_UpdateConferenceParticipantRequest_c75353cb83' responses: '200': description: Participant resource. content: application/json: schema: $ref: '#/components/schemas/ParticipantResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings: get: summary: List conference recordings description: Returns the list of recordings made for the specified conference. x-latency-category: responsive operationId: GetTexmlConferenceRecordings tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' responses: '200': description: Multiple conference recording resources. content: application/json: schema: $ref: '#/components/schemas/ConferenceRecordingResourceIndex' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings.json: get: summary: Fetch recordings for a conference description: Returns recordings for a conference identified by conference_sid. x-latency-category: responsive x-group-parameters: 'true' operationId: FetchTeXMLConferenceRecordings tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/ConferenceSid' responses: '200': description: Successful Get Call Recordings Response content: application/json: schema: $ref: '#/components/schemas/TexmlGetCallRecordingsResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Queues: get: summary: List queue resources description: Returns a paginated list of queue resources for the account, with support for filtering by creation or update dates. x-latency-category: responsive operationId: GetTexmlQueues tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageToken' - $ref: '#/components/parameters/DateCreated' - $ref: '#/components/parameters/DateUpdated' responses: '200': description: Multiple queue resources. content: application/json: schema: $ref: '#/components/schemas/QueueResourceIndex' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Create a new queue description: Creates a new queue resource for the account with the provided settings and returns it. x-latency-category: responsive operationId: CreateTexmlQueue tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' requestBody: description: Create Queue request object required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/call-scripting_CreateQueueRequest_c75353cb83' responses: '200': description: Queue resource. content: application/json: schema: $ref: '#/components/schemas/QueueResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Queues/{queue_sid}: delete: summary: Delete a queue resource description: Permanently deletes the specified queue resource from the account. x-latency-category: responsive operationId: DeleteTexmlQueue tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/QueueSid' responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' get: summary: Fetch a queue resource description: Returns a single queue resource for the account by its QueueSid. x-latency-category: responsive operationId: GetTexmlQueue tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/QueueSid' responses: '200': description: Queue resource. content: application/json: schema: $ref: '#/components/schemas/QueueResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' post: summary: Update a queue resource description: Updates the specified queue resource's settings and returns the updated queue. x-latency-category: responsive operationId: UpdateTexmlQueue tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/QueueSid' requestBody: description: Update Queue request object required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/call-scripting_UpdateQueueRequest_c75353cb83' responses: '200': description: Queue resource. content: application/json: schema: $ref: '#/components/schemas/QueueResource' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Recordings.json: get: summary: Fetch multiple recording resources description: Returns multiple recording resources for an account. x-latency-category: responsive x-group-parameters: 'true' operationId: GetTeXMLCallRecordings tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSizeTexml' - $ref: '#/components/parameters/TexmlDateCreated' responses: '200': description: Successful Get Call Recordings Response content: application/json: schema: $ref: '#/components/schemas/TexmlGetCallRecordingsResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json: delete: summary: Delete recording resource description: Deletes recording resource identified by recording id. x-latency-category: responsive x-group-parameters: 'true' operationId: DeleteTeXMLCallRecording tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/RecordingSid' responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' get: summary: Fetch recording resource description: Returns recording resource identified by recording id. x-latency-category: responsive x-group-parameters: 'true' operationId: GetTeXMLCallRecording tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/RecordingSid' responses: '200': description: Retrieves call recording resource. content: application/json: schema: $ref: '#/components/schemas/TexmlGetCallRecordingResponseBody' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Transcriptions.json: get: summary: List recording transcriptions description: Returns multiple recording transcription resources for an account. x-latency-category: responsive x-group-parameters: 'true' operationId: GetTeXMLRecordingTranscriptions tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/PageToken' - $ref: '#/components/parameters/PageSize' responses: '200': description: Successful list Recording Transcriptions Response content: application/json: schema: type: object title: List Recording Transcriptions Response properties: transcriptions: type: array items: $ref: '#/components/schemas/TexmlRecordingTranscription' end: type: integer description: The number of the last element on the page, zero-indexed example: 1 first_page_uri: type: string format: uri description: Relative uri to the first page of the query results previous_page_uri: type: string format: uri description: Relative uri to the previous page of the query results next_page_uri: type: string description: Relative uri to the next page of the query results example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions.json?PageToken=KRWXZPO&PageSize=1 page: type: integer description: Current page number, zero-indexed. example: 0 page_size: type: integer description: The number of items on the page example: 20 start: type: integer description: The number of the first element on the page, zero-indexed. example: 0 uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions.json?PageToken=YTBNAXPI&PageSize=1 '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json: delete: summary: Delete a recording transcription description: Permanently deletes a recording transcription. x-latency-category: responsive x-group-parameters: 'true' operationId: DeleteTeXMLRecordingTranscription tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/RecordingTranscriptionSid' responses: '204': description: The resource was deleted successfully. '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' get: summary: Fetch a recording transcription resource description: Returns the recording transcription resource identified by its ID. x-latency-category: responsive x-group-parameters: 'true' operationId: GetTeXMLRecordingTranscription tags: - TeXML REST Commands parameters: - $ref: '#/components/parameters/AccountSid' - $ref: '#/components/parameters/RecordingTranscriptionSid' responses: '200': description: Successful get Recording Transcription Response content: application/json: schema: type: object title: Recording Transcription Response $ref: '#/components/schemas/TexmlRecordingTranscription' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' /texml/ai_calls/{connection_id}: post: summary: Initiate an outbound AI call description: 'Initiate an outbound AI call with warm-up support: Telnyx attempts to warm up the assistant identified by `AIAssistantId` before placing the call and starts it automatically when the called party answers. Validates parameters, builds an internal TeXML with an AI Assistant configuration, encodes instructions into client state, and calls the dial API. The Twiml, Texml, and Url parameters are not allowed and will result in a 422 error. **Expected callback events:** Status callbacks: `initiated`, `ringing`, `answered`, one terminal status (`completed`, `no-answer`, `busy`, `canceled`, or `failed`), then `analyzed` after post-call processing completes. Conversation callbacks: `conversation_created` and `conversation_ended`. Recording, AMD, transcription, and deepfake detection callbacks are only sent when those features are enabled. ' x-latency-category: responsive x-group-parameters: 'true' operationId: InitiateTexmlAICall tags: - TeXML REST Commands parameters: - name: connection_id in: path description: The ID of the TeXML connection to use for the call. required: true schema: type: string requestBody: description: Initiate AI Call request object required: true content: application/json: schema: $ref: '#/components/schemas/InitiateAICallRequest' responses: '200': $ref: '#/components/responses/InitiateAICallResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '422': $ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83' /texml/calls/{connection_id}: post: summary: Create a connection-scoped TeXML call description: Initiate an outbound TeXML call using a TeXML application connection ID, not an account SID. Request parameter names are case-sensitive. From and To are required; Texml supplies inline instructions and Url overrides the application XML request URL. When neither is supplied, the application configuration supplies the instructions. The response is a flat call object without a data wrapper. operationId: CreateTexmlCall tags: - TeXML REST Commands parameters: - name: connection_id in: path required: true description: The ID of the connection holding the TeXML application to call from. schema: type: string example: '1234567890' requestBody: required: true description: Connection-scoped outbound call parameters. content: application/json: schema: type: object required: - From - To properties: From: type: string description: The E.164-formatted phone number or SIP URI to present as the caller. example: '+13120001234' To: type: string description: The E.164-formatted phone number or SIP URI to call. example: '+13121230000' Texml: type: string description: Inline TeXML instructions to execute when the call is answered. example: Hello Url: type: string description: The URL from which to retrieve TeXML instructions. Overrides the TeXML application XML request URL. example: https://example.com/instructions.xml Method: type: string enum: - GET - POST description: HTTP method used to retrieve TeXML instructions from Url. example: POST example: From: '+13120001234' To: '+13121230000' Texml: Hello application/x-www-form-urlencoded: schema: type: object required: - From - To properties: From: type: string description: The E.164-formatted phone number or SIP URI to present as the caller. example: '+13120001234' To: type: string description: The E.164-formatted phone number or SIP URI to call. example: '+13121230000' Texml: type: string description: Inline TeXML instructions to execute when the call is answered. example: Hello Url: type: string description: The URL from which to retrieve TeXML instructions. Overrides the TeXML application XML request URL. example: https://example.com/instructions.xml Method: type: string enum: - GET - POST description: HTTP method used to retrieve TeXML instructions from Url. example: POST example: From: '+13120001234' To: '+13121230000' Texml: Hello responses: '200': description: The outbound call was queued. content: application/json: schema: type: object required: - call_sid - from - to - status properties: call_sid: type: string description: The call control ID of the created call. example: v3:call-control-id from: type: string description: The caller address. example: '+13120001234' to: type: string description: The called address. example: '+13121230000' status: type: string description: The initial status of the outbound call. enum: - queued example: queued example: call_sid: v3:call-control-id from: '+13120001234' to: '+13121230000' status: queued '401': $ref: '#/components/responses/UnauthenticatedResponse' '422': description: A required call parameter is missing or invalid. content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' example: errors: - code: '10004' detail: 'Can''t be blank: To' source: pointer: /To title: Missing required parameter /texml/secrets: post: summary: Create a TeXML secret description: Create a TeXML secret which can be later used as a Dynamic Parameter for TeXML when using Mustache Templates in your TeXML. In your TeXML you will be able to use your secret name, and this name will be replaced by the actual secret value when processing the TeXML on Telnyx side. The secrets are not visible in any logs. x-latency-category: responsive operationId: CreateTexmlSecret tags: - TeXML REST Commands requestBody: description: Create TeXML secret request object required: true content: application/json: schema: $ref: '#/components/schemas/CreateTeXMLSecretRequest' responses: '201': description: Successful response upon creating a TeXML secret. content: application/json: schema: type: object title: Create TeXML Secret request properties: data: $ref: '#/components/schemas/CreateTeXMLSecretResult' '422': $ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83' /texml_applications: get: description: Returns a list of your TeXML Applications. summary: List all TeXML Applications operationId: FindTexmlApplications tags: - TeXML Applications x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/call-scripting_PageConsolidated' - $ref: '#/components/parameters/call-scripting_FilterConsolidated' - $ref: '#/components/parameters/SortApplication' responses: '200': description: Successful response content: application/json: schema: type: object title: Get All Texml Applications Response properties: data: type: array items: $ref: '#/components/schemas/TexmlApplication' meta: $ref: '#/components/schemas/call-scripting_PaginationMeta' '400': $ref: '#/components/responses/call-scripting_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/call-scripting_UnauthorizedResponse' post: description: Creates a TeXML application, which defines the voice URLs and settings used to serve TeXML instructions for calls, and returns the created application. summary: Creates a TeXML Application operationId: CreateTexmlApplication tags: - TeXML Applications x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be set when creating a TeXML Application required: true content: application/json: schema: $ref: '#/components/schemas/CreateTexmlApplicationRequest' responses: '201': description: Successful response content: application/json: schema: type: object title: Texml Application Response properties: data: $ref: '#/components/schemas/TexmlApplication' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/call-scripting_UnauthorizedResponse' '404': $ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83' '422': $ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83' /texml_applications/{id}: delete: description: Permanently deletes the specified TeXML application from your account. summary: Deletes a TeXML Application operationId: DeleteTexmlApplication tags: - TeXML Applications parameters: - $ref: '#/components/parameters/id' responses: '200': description: Successful response content: application/json: schema: type: object title: Texml Application Response properties: data: $ref: '#/components/schemas/TexmlApplication' '400': $ref: '#/components/responses/call-scripting_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/call-scripting_UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponseApp' get: description: Retrieves the details of an existing TeXML Application. summary: Retrieve a TeXML Application operationId: GetTexmlApplication tags: - TeXML Applications parameters: - $ref: '#/components/parameters/id' responses: '200': description: Successful response content: application/json: schema: type: object title: Texml Application Response properties: data: $ref: '#/components/schemas/TexmlApplication' '400': $ref: '#/components/responses/call-scripting_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/call-scripting_UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponseApp' patch: description: Updates settings of an existing TeXML Application. summary: Update a TeXML Application operationId: UpdateTexmlApplication tags: - TeXML Applications parameters: - $ref: '#/components/parameters/id' requestBody: description: Parameters that can be updated in a TeXML Application required: true content: application/json: schema: $ref: '#/components/schemas/UpdateTexmlApplicationRequest' responses: '200': description: Successful response content: application/json: schema: type: object title: Texml Application Response properties: data: $ref: '#/components/schemas/TexmlApplication' '400': $ref: '#/components/responses/call-scripting_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/call-scripting_UnauthorizedResponse' '404': $ref: '#/components/responses/NotFoundResponseApp' '409': description: Conflict. Another update to this application is still in progress. Wait and retry the request later. content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' example: errors: - detail: A previous update to this connection is still in progress. Please try again later. '422': $ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83' /text-to-speech/speech: get: summary: Stream text to speech over WebSocket description: 'Open a WebSocket connection to stream text and receive synthesized audio in real time. Authentication is provided via the standard `Authorization: Bearer ` header. Send JSON frames with text to synthesize; receive JSON frames containing base64-encoded audio chunks. Supported providers: `aws`, `telnyx`, `azure`, `minimax`, `resemble`, `elevenlabs`, `xai`, `humain`, `soniox`. **Connection flow:** 1. Open WebSocket with query parameters specifying provider, voice, and model. 2. Send an initial handshake message `{"text": " "}` (single space) with optional `voice_settings` to initialize the session. 3. Send text messages as `{"text": "Hello world"}`. 4. Receive audio chunks as JSON frames with base64-encoded audio. 5. A final frame with `isFinal: true` indicates the end of audio for the current text. To interrupt and restart synthesis mid-stream, send `{"force": true}` — the current worker is stopped and a new one is started. **Note:** The Telnyx `Ultra` model is not available over WebSocket. Use the HTTP POST `/text-to-speech/speech` endpoint instead.' operationId: TextToSpeechOverWs tags: - Text To Speech Commands parameters: - $ref: '#/components/parameters/voice' - $ref: '#/components/parameters/provider' - $ref: '#/components/parameters/model_id' - $ref: '#/components/parameters/voice_id' - $ref: '#/components/parameters/disable_cache' - $ref: '#/components/parameters/audio_format' - $ref: '#/components/parameters/socket_id' responses: '101': description: 'WebSocket connection established. Communication proceeds via JSON frames. **Client → Server:** See `ClientTextFrame` schema. **Server → Client:** See `AudioChunkFrame`, `FinalFrame`, and `ErrorFrame` schemas.' content: application/json: schema: oneOf: - $ref: '#/components/schemas/ClientTextFrame' - $ref: '#/components/schemas/TtsServerEvent' '200': description: WebSocket upgrade successful — this response is not returned directly. See 101 for frame documentation. '400': description: Invalid parameters — provider not supported or missing required fields. '401': description: Authentication failed — missing or invalid `x-telnyx-auth-rev2` header. post: summary: Generate speech from text description: 'Generate synthesized speech audio from text input. Returns audio in the requested format (binary audio stream, base64-encoded JSON, or an audio URL for later retrieval). Authentication is provided via the standard `Authorization: Bearer ` header. The `voice` parameter provides a convenient shorthand to specify provider, model, and voice in a single string (e.g. `Telnyx.Ultra.`). Alternatively, specify `provider` explicitly along with provider-specific parameters. Supported providers: `aws`, `telnyx`, `azure`, `elevenlabs`, `minimax`, `resemble`, `xai`, `humain`, `soniox`. The Telnyx `Ultra` model supports 44 languages with emotion control, speed adjustment, and volume control. Use the `telnyx` provider-specific parameters to configure these features.' operationId: generateSpeech tags: - Text To Speech Commands requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerateSpeechRequest' example: voice: string text: string provider: aws language: string text_type: text output_type: binary_output disable_cache: false aws: language_code: string text_type: text lexicon_names: - string output_format: string sample_rate: string telnyx: voice_speed: 1.0 response_format: mp3 sampling_rate: 24000 volume: 1.0 emotion: neutral azure: language_code: en-US output_format: audio-24khz-160kbitrate-mono-mp3 text_type: text api_key: string region: string deployment_id: string effect: string gender: string elevenlabs: language_code: string api_key: string minimax: speed: 0 vol: 0 pitch: 0 response_format: string language_boost: string resemble: api_key: string precision: string sample_rate: string format: string xai: voice_id: eve language: auto output_format: mp3 sample_rate: 24000 humain: voice_id: sara-en ttfb_eagerness: 0 soniox: voice_id: Emma model_id: tts-rt-v2 language: en speed: 1.0 audio_format: mp3 responses: '200': description: 'Speech generated successfully. The response format depends on the `output_type` parameter: - `binary_output` (default): Returns raw audio bytes with the appropriate `Content-Type` header. Most providers return `audio/mpeg`; `humain` has no MP3 output and always returns raw headerless PCM16LE 24kHz mono as `audio/pcm`. - `base64_output`: Returns a JSON object with `base64_audio` field.' content: audio/mpeg: schema: type: string format: binary description: Raw audio bytes. Returned when `output_type` is `binary_output` (default) for most providers. audio/pcm: schema: type: string format: binary description: Raw headerless PCM16LE audio bytes, mono, 24kHz. Returned when `output_type` is `binary_output` (default) and `provider` is `humain` — Humain has no MP3 output and no format negotiation. application/json: schema: $ref: '#/components/schemas/Base64AudioResponse' example: base64_audio: string '400': description: Bad request — invalid parameters or provider error. content: application/json: schema: $ref: '#/components/schemas/text-to-speech_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. '401': description: Authentication failed — missing or invalid API key. '422': description: Validation failed — invalid or missing required fields. content: application/json: schema: $ref: '#/components/schemas/text-to-speech_ValidationErrorResponse' /text-to-speech/voices: get: summary: List available voices description: 'Retrieve a list of available voices from one or all TTS providers. When `provider` is specified, returns voices for that provider only. Otherwise, returns voices from all providers. Some providers (ElevenLabs, Resemble) require an API key to list voices.' operationId: listVoices tags: - Text To Speech Commands parameters: - name: provider in: query required: false description: Filter voices by provider. If omitted, voices from all providers are returned. schema: type: string enum: - aws - telnyx - azure - elevenlabs - minimax - resemble - xai - humain - soniox - name: api_key in: query required: false description: API key for providers that require one to list voices (e.g. ElevenLabs). schema: type: string responses: '200': description: List of available voices. content: application/json: schema: $ref: '#/components/schemas/VoicesResponse' example: voices: - provider: string name: string voice_id: string language: string gender: string '400': description: Bad request — invalid provider or missing required API key. content: application/json: schema: $ref: '#/components/schemas/text-to-speech_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. '401': description: Authentication failed — missing or invalid API key. /traffic/policy/profiles: get: summary: Get all traffic policy profiles description: Get all traffic policy profiles belonging to the user that match the given filters. operationId: GetTrafficPolicyProfiles tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/wireless_PageNumber' - $ref: '#/components/parameters/wireless_PageSize' - name: filter[type] description: Filter by traffic policy profile type. in: query required: false schema: type: string enum: - whitelist - blacklist - throttling example: whitelist - name: filter[service] description: Filter by service ID. in: query required: false schema: type: string example: service_123 - name: sort description: Sorts traffic policy profiles by the given field. Defaults to ascending order unless field is prefixed with a minus sign. in: query required: false schema: type: string enum: - service - -service - type - -type responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/TrafficPolicyProfile' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse' x-latency-category: responsive post: summary: Create a traffic policy profile description: Create a new traffic policy profile. At least one of `services`, `ip_ranges`, or `domains` must be provided. operationId: CreateTrafficPolicyProfile tags: - Traffic Policy Profiles requestBody: required: true content: application/json: schema: type: object properties: type: description: The type of the traffic policy profile. type: string enum: - whitelist - blacklist example: whitelist services: description: Array of PCEF service IDs to include in the profile. type: array items: type: string example: - service_123 - service_456 ip_ranges: description: Array of IP ranges in CIDR notation. type: array items: type: string example: - 10.64.0.0/24 - 10.64.0.0/25 domains: description: Array of domain names. type: array items: type: string example: - www.hbomax.com - netflix.com limit_bw_kbps: description: Bandwidth limit in kbps. Must be 512 or 1024. type: integer enum: - 512 - 1024 example: 512 required: - type responses: '201': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/TrafficPolicyProfile' '422': $ref: '#/components/responses/sim-cards-configuration_wireless_UnprocessableEntity' default: $ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse' x-latency-category: responsive /traffic/policy/profiles/services: get: summary: Get all available traffic policy profile services description: Get all available PCEF services that can be used in traffic policy profiles. operationId: GetTrafficPolicyProfileServices tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/wireless_PageNumber' - $ref: '#/components/parameters/wireless_PageSize' - name: filter[group] description: Filter services by group. in: query required: false schema: type: string example: Social Media - name: filter[name] description: Filter services by name. in: query required: false schema: type: string example: Netflix responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WirelessPcrfService' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse' x-latency-category: responsive /traffic/policy/profiles/{id}: delete: summary: Delete a traffic policy profile description: Permanently deletes the specified traffic policy profile from your account. operationId: DeleteTrafficPolicyProfile tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/TrafficPolicyProfileId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: object properties: id: type: string format: uuid description: Identifies the resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 '404': $ref: '#/components/responses/wireless_ResourceNotFound' default: $ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse' x-latency-category: responsive get: summary: Get a traffic policy profile description: Returns the details regarding a specific traffic policy profile. operationId: GetTrafficPolicyProfile tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/TrafficPolicyProfileId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/TrafficPolicyProfile' '404': $ref: '#/components/responses/wireless_ResourceNotFound' default: $ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse' x-latency-category: responsive patch: summary: Update a traffic policy profile description: Updates the specified traffic policy profile and returns the updated profile. operationId: UpdateTrafficPolicyProfile tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/TrafficPolicyProfileId' requestBody: required: true content: application/json: schema: type: object properties: type: description: The type of the traffic policy profile. type: string enum: - whitelist - blacklist - throttling example: whitelist services: description: Array of PCEF service IDs to include in the profile. type: array items: type: string example: - service_123 ip_ranges: description: Array of IP ranges in CIDR notation. type: array items: type: string example: - 10.64.0.0/24 domains: description: Array of domain names. type: array items: type: string example: - netflix.com limit_bw_kbps: description: Bandwidth limit in kbps. Must be 512 or 1024, or null to remove. type: - integer - 'null' enum: - 512 - 1024 - null example: 1024 responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/TrafficPolicyProfile' '404': $ref: '#/components/responses/wireless_ResourceNotFound' '422': $ref: '#/components/responses/sim-cards-configuration_wireless_UnprocessableEntity' default: $ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse' x-latency-category: responsive /traffic_policy_profiles: get: summary: Get all traffic policy profiles description: Get all traffic policy profiles belonging to the user that match the given filters. operationId: GetTrafficPolicyProfiles tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - name: filter[type] description: Filter by traffic policy profile type. in: query required: false schema: type: string enum: - whitelist - blacklist - throttling example: whitelist - name: filter[service] description: Filter by service ID. in: query required: false schema: type: string example: service_123 - name: sort description: Sorts traffic policy profiles by the given field. Defaults to ascending order unless field is prefixed with a minus sign. in: query required: false schema: type: string enum: - service - -service - type - -type responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/TrafficPolicyProfile' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' post: summary: Create a traffic policy profile description: Create a new traffic policy profile. At least one of `services`, `ip_ranges`, or `domains` must be provided. operationId: CreateTrafficPolicyProfile tags: - Traffic Policy Profiles requestBody: required: true content: application/json: schema: type: object properties: type: description: The type of the traffic policy profile. type: string enum: - whitelist - blacklist example: whitelist services: description: Array of PCEF service IDs to include in the profile. type: array items: type: string example: - service_123 - service_456 ip_ranges: description: Array of IP ranges in CIDR notation. type: array items: type: string example: - 10.64.0.0/24 - 10.64.0.0/25 domains: description: Array of domain names. type: array items: type: string example: - www.hbomax.com - netflix.com limit_bw_kbps: description: Bandwidth limit in kbps. Must be 512 or 1024. type: integer enum: - 512 - 1024 example: 512 required: - type responses: '201': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/TrafficPolicyProfile' '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /traffic_policy_profiles/services: get: summary: Get all available traffic policy profile services description: Get all available PCEF services that can be used in traffic policy profiles. operationId: GetTrafficPolicyProfileServices tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - name: filter[group] description: Filter services by group. in: query required: false schema: type: string example: Social Media - name: filter[name] description: Filter services by name. in: query required: false schema: type: string example: Netflix responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WirelessPcrfService' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /traffic_policy_profiles/{id}: delete: summary: Delete a traffic policy profile description: Permanently deletes the specified traffic policy profile from your account. operationId: DeleteTrafficPolicyProfile tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/TrafficPolicyProfileId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: object properties: id: type: string format: uuid description: Identifies the resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' get: summary: Get a traffic policy profile description: Returns the details regarding a specific traffic policy profile. operationId: GetTrafficPolicyProfile tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/TrafficPolicyProfileId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/TrafficPolicyProfile' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' patch: summary: Update a traffic policy profile description: Updates the specified traffic policy profile and returns the updated profile. operationId: UpdateTrafficPolicyProfile tags: - Traffic Policy Profiles parameters: - $ref: '#/components/parameters/TrafficPolicyProfileId' requestBody: required: true content: application/json: schema: type: object properties: type: description: The type of the traffic policy profile. type: string enum: - whitelist - blacklist - throttling example: whitelist services: description: Array of PCEF service IDs to include in the profile. type: array items: type: string example: - service_123 ip_ranges: description: Array of IP ranges in CIDR notation. type: array items: type: string example: - 10.64.0.0/24 domains: description: Array of domain names. type: array items: type: string example: - netflix.com limit_bw_kbps: description: Bandwidth limit in kbps. Must be 512 or 1024, or null to remove. type: - integer - 'null' enum: - 512 - 1024 - null example: 1024 responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/TrafficPolicyProfile' '404': $ref: '#/components/responses/ResourceNotFound' '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /uac_connections: get: description: Returns a list of your UAC connections. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration. summary: List UAC connections operationId: ListUacConnections tags: - UAC Connections x-group-parameters: 'true' x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/connections_FilterConsolidated' - $ref: '#/components/parameters/connections_PageConsolidated' - $ref: '#/components/parameters/connections_SortConnection' responses: '200': description: Successful response with a list of UAC connections. content: application/json: schema: type: object title: List UAC Connections Response properties: data: type: array items: $ref: '#/components/schemas/UacConnection' meta: $ref: '#/components/schemas/connections_PaginationMeta' '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' post: description: Creates a UAC connection. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration. summary: Create a UAC connection operationId: CreateUacConnection tags: - UAC Connections x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be defined during UAC connection creation required: true content: application/json: schema: $ref: '#/components/schemas/CreateUacConnectionRequest' responses: '201': description: Successful response with details about a UAC connection. content: application/json: schema: type: object title: UAC Connection Response properties: data: $ref: '#/components/schemas/UacConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /uac_connections/{id}: delete: description: Permanently deletes the specified UAC connection from your account. summary: Delete a UAC connection operationId: DeleteUacConnection tags: - UAC Connections parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string responses: '200': description: Successful response with details about a UAC connection. content: application/json: schema: type: object title: UAC Connection Response properties: data: $ref: '#/components/schemas/UacConnection' '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' get: description: Retrieves the details of an existing UAC connection. summary: Retrieve a UAC connection operationId: RetrieveUacConnection tags: - UAC Connections parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string responses: '200': description: Successful response with details about a UAC connection. content: application/json: schema: type: object title: UAC Connection Response properties: data: $ref: '#/components/schemas/UacConnection' '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' patch: description: Updates settings of an existing UAC connection. summary: Update a UAC connection operationId: UpdateUacConnection tags: - UAC Connections parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string requestBody: description: Parameters that can be updated in a UAC connection required: true content: application/json: schema: $ref: '#/components/schemas/UpdateUacConnectionRequest' responses: '200': description: Successful response with details about a UAC connection. content: application/json: schema: type: object title: UAC Connection Response properties: data: $ref: '#/components/schemas/UacConnection' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' '409': description: Conflict. Another update to this connection is still in progress. Wait and retry the request later. content: application/json: schema: $ref: '#/components/schemas/connections_ErrorResponse' example: errors: - detail: A previous update to this connection is still in progress. Please try again later. '422': $ref: '#/components/responses/connections_UnprocessableEntityResponse' /uac_connections/{id}/actions/check_registration_status: post: description: Returns the live SIP registration status for a UAC connection. Reports whether the endpoint is currently registered (`status`) and the timestamp of the last SIP registration event (`last_registration`). summary: Check a UAC Connection Registration Status operationId: CheckUacConnectionRegistrationStatus tags: - UAC Connections parameters: - name: id in: path description: Identifies the resource. required: true schema: type: string responses: '200': description: Successful response with details about a credential connection registration status. content: application/json: schema: type: object title: Registration Status Response properties: data: type: object title: Registration Status properties: record_type: type: string description: Identifies the type of the resource. example: registration_status status: type: string description: The current registration status of your SIP connection enum: - Not Applicable - Not Registered - Failed - Expired - Registered - Unregistered sip_username: type: - string - 'null' description: The user name of the SIP connection example: sip_username ip_address: type: - string - 'null' description: The ip used during the SIP connection example: 190.106.106.121 transport: type: - string - 'null' description: The protocol of the SIP connection example: TCP port: type: - integer - 'null' description: The port of the SIP connection example: 37223 user_agent: type: - string - 'null' description: The user agent of the SIP connection example: Z 5.4.12 v2.10.13.2-mod last_registration: type: - string - 'null' description: ISO 8601 formatted date indicating when the resource was last updated. example: '2018-02-02T22:25:27.521Z' example: record_type: registration_status status: Expired sip_username: rogerp ip_address: 190.106.106.121 transport: UDP port: 37223 user_agent: Z 5.4.12 v2.10.13.2-mod last_registration: '2021-09-28T15:11:02' examples: registered: summary: Endpoint is registered value: data: record_type: registration_status status: Registered sip_username: '1006' ip_address: 192.0.2.14 transport: UDP port: 5060 user_agent: Linphone/4.0.0 last_registration: '2026-08-31T20:00:00Z' unregistered: summary: No active registration; all fields except record_type and status are null value: data: record_type: registration_status status: Unregistered sip_username: null ip_address: null transport: null port: null user_agent: null last_registration: null '400': $ref: '#/components/responses/connections_BadRequestResponse' '401': $ref: '#/components/responses/UnauthenticatedResponse' '403': $ref: '#/components/responses/connections_UnauthorizedResponse' '404': $ref: '#/components/responses/connections_NotFoundResponse' /usage_reports: get: tags: - Usage Reports (BETA) summary: Get Telnyx product usage data (BETA) description: Get Telnyx usage data by product, broken out by the specified dimensions operationId: GetUsageReports parameters: - name: product in: query description: Telnyx product required: true schema: type: string examples: product=wireless: value: wireless summary: wireless product=messaging: value: messaging summary: messaging - name: dimensions in: query description: Breakout by specified product dimensions required: true schema: type: array items: type: string examples: dimensions=direction,currency,message_type: value: - direction - currency - message_type summary: Dimensions aggregation list - name: metrics in: query description: Specified product usage values required: true schema: type: array items: type: string examples: metrics=cost,billed_sec: value: - cost - billed_sec summary: Metrics aggregation list - name: start_date in: query description: 'The start date for the time range you are interested in. The maximum time range is 31 days. Format: YYYY-MM-DDTHH:mm:ssZ' required: false schema: type: string examples: start_date=2024-02-01T00:00:00Z: value: '2024-02-01T00:00:00Z' summary: Aggregate for records with timestamp starting at specified date and time. - name: end_date in: query description: 'The end date for the time range you are interested in. The maximum time range is 31 days. Format: YYYY-MM-DDTHH:mm:ssZ' required: false schema: type: string examples: end_date=2024-03-01T00:00:00Z: value: '2024-03-01T00:00:00Z' summary: Aggregate for records with timestamp ending at specified date and time. - name: date_range in: query description: A more user-friendly way to specify the timespan you want to filter by. More options can be found in the Telnyx API Reference docs. required: false schema: type: string examples: date_range=today: value: today summary: today - Searches for records with timestamp starting at `00:00:00` of the current day date_range=last_3_days: value: last_3_days summary: last_3_days - Searches for records with timestamp starting at `00:00:00` since 3 days ago - name: filter in: query description: Filter records on dimensions required: false schema: type: string examples: filter[currency]=USD: value: filter[currency]=USD summary: Filter currency on USD filter[direction]=inbound: value: filter[direction]=inbound summary: Filter direction on Inbound filter[country_code]=NLD: value: filter[country_code]=NLD summary: Filter country code on NLD - name: managed_accounts in: query description: Return the aggregations for all Managed Accounts under the user making the request. required: false schema: type: boolean examples: managed_accounts=true: value: false summary: Fetch aggregations for all Managed Accounts - name: sort description: Specifies the sort order for results in: query required: false schema: type: array items: type: string examples: sort=created_at: value: - created_at summary: Sorts search results using the `created_at` date-time in ascending order sort=-created_at: value: - -created_at summary: Sorts search results using the `-created_at` date-time in descending order - name: format in: query description: Specify the response format (csv or json). JSON is returned by default, even if not specified. required: false schema: type: string enum: - csv - json examples: format=json: value: json summary: Get the response in JSON format format=csv: value: csv summary: Get the response in CSV format - name: authorization_bearer in: header description: Bearer token used to authenticate the request. schema: type: string description: Authenticates the request with your Telnyx API V2 KEY - name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]' schema: type: object properties: number: title: Page[Number] minimum: 1 type: integer default: 1 size: title: Page[Size] maximum: 5000 type: integer default: 20 examples: page[number]=1&page[size]=20: value: number: 1 size: 20 summary: Returns the first page with 20 records per page (default pagination) page[number]=2&page[size]=20: value: number: 2 size: 20 summary: Returns the second page with 20 records per page page[number]=1&page[size]=50: value: number: 1 size: 50 summary: Returns the first page with 50 records per page (larger page size) page[number]=5&page[size]=100: value: number: 5 size: 100 summary: Returns the fifth page with 100 records per page responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/UsageReportsResponse' text/csv: schema: type: string description: CSV formatted data example: 'user_id,direction,product,cost,billed_sec 3ca7bd3d-7d82-4e07-9df4-009123068320,inbound,forking,0.000800,17.000000 ...' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse' x-latency-category: interactive /usage_reports/options: get: tags: - Usage Reports (BETA) summary: Get Usage Reports query options (BETA) description: Get the Usage Reports options for querying usage, including the products available and their respective metrics and dimensions operationId: ListUsageReportsOptions parameters: - name: product in: query description: Options (dimensions and metrics) for a given product. If none specified, all products will be returned. required: false schema: type: string examples: product=wireless: value: wireless summary: Specify a product if you know what you're looking for - name: authorization_bearer in: header description: Bearer token used to authenticate the request. schema: type: string description: Authenticates the request with your Telnyx API V2 KEY responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/UsageReportsOptionsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse' x-latency-category: interactive /user/addresses: get: description: Returns a paginated list of your user addresses, with support for filtering and sorting. summary: List all user addresses operationId: FindUserAddress tags: - UserAddresses x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/user-addresses_PageConsolidated' - $ref: '#/components/parameters/user-addresses_FilterConsolidated' - $ref: '#/components/parameters/SortUserAddress' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/UserAddress' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found x-latency-category: responsive post: description: Creates a new user address from the provided details and returns the created address. summary: Creates a user address operationId: CreateUserAddress tags: - UserAddresses x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be defined during user address creation required: true content: application/json: schema: $ref: '#/components/schemas/UserAddressCreate' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/UserAddress' '422': description: Bad request x-latency-category: responsive /user/addresses/{id}: get: description: Retrieves the details of an existing user address. summary: Retrieve a user address operationId: GetUserAddress tags: - UserAddresses parameters: - name: id in: path description: user address ID required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/UserAddress' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request x-latency-category: responsive /user_addresses: get: description: Returns a paginated list of your user addresses, with support for filtering and sorting. summary: List all user addresses operationId: FindUserAddress tags: - UserAddresses x-endpoint-cost: medium parameters: - $ref: '#/components/parameters/user-addresses_PageConsolidated_26a215df92' - $ref: '#/components/parameters/user-addresses_FilterConsolidated_26a215df92' - $ref: '#/components/parameters/SortUserAddress' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/user-addresses_UserAddress' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request '401': description: Unauthorized '404': description: Resource not found post: description: Creates a new user address from the provided details and returns the created address. summary: Creates a user address operationId: CreateUserAddress tags: - UserAddresses x-endpoint-cost: medium parameters: [] requestBody: description: Parameters that can be defined during user address creation required: true content: application/json: schema: $ref: '#/components/schemas/user-addresses_UserAddressCreate' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/user-addresses_UserAddress' '422': description: Bad request /user_addresses/{id}: get: description: Retrieves the details of an existing user address. summary: Retrieve a user address operationId: GetUserAddress tags: - UserAddresses parameters: - name: id in: path description: user address ID required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/user-addresses_UserAddress' '401': description: Unauthorized '404': description: Resource not found '422': description: Bad request /user_tags: get: summary: List User Tags operationId: GetUserTags description: Returns the user tags defined on your account, with support for filtering. Tags help organize resources such as phone numbers. tags: - User Tags parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[starts_with]' schema: type: object properties: starts_with: type: string example: my-tag description: Filter tags by prefix responses: '200': description: A list of your tags content: application/json: schema: type: object properties: data: type: object properties: outbound_profile_tags: $ref: '#/components/schemas/UserTagList' number_tags: $ref: '#/components/schemas/UserTagList' '401': $ref: '#/components/responses/UnauthenticatedResponse' /v2/bot_challenge: post: summary: Issue a bot challenge description: Generates a reverse-CAPTCHA challenge used to gate the bot signup flow. A random active problem is selected from the pool; math problems are returned obfuscated (case randomization, symbol injection, spacing noise) with an unobfuscated rounding instruction appended, while string and binary problems are returned as-is. The response contains a single-use nonce, the problem text, and the current terms-and-conditions and privacy-policy URLs, which must be echoed back on the signup request. Challenges expire after a short window (10 minutes by default) and can only be answered once. This endpoint is public and unauthenticated. operationId: createBotChallenge x-latency-category: responsive tags: - Bot Signup x-endpoint-cost: light security: [] requestBody: required: false description: Optional self-reported metadata about the LLM solving the challenge. Used for analytics only; it does not influence which problem is served. content: application/json: schema: $ref: '#/components/schemas/BotChallengeRequest' example: llm_model_name: claude-opus-4 llm_parameter_count: 175B llm_quantization: int8 responses: '201': description: Challenge issued. content: application/json: schema: $ref: '#/components/schemas/BotChallengeResponse' example: data: nonce: c6feda4e-6501-4db9-a21f-665e5b4ce2ba problem: W#hAt iS f!Ve tImEs sEvEn? Round to 0 decimal places. Omit units. challenge_type: math precision: 0 terms_and_conditions_url: https://telnyx.com/terms-and-conditions-of-service privacy_policy_url: https://telnyx.com/privacy-policy '400': description: The JSON request body could not be parsed. content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: There was a problem in the JSON you submitted. Please check your formatting and try again. '503': description: No bot challenge problems are currently available. content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: No bot challenge problems available /v2/bot_sessions: get: summary: Exchange a magic link token for a session description: Consumes the one-time portal redirect (magic link) token emailed during bot signup and returns an API session. The token is a UUIDv7 that encodes its creation time; it expires after a configurable validity window (15 minutes by default) and is cleared on first use. Although the action creates a session, the route uses the GET verb because it is opened from an email link. On first use the account is also initialized. For bot signup (freemium) accounts the response is a minimal envelope containing only the `api_v2_token`; accounts that are permitted to use magic links but are not freemium accounts may instead receive an extended session payload when additional steps (such as two-factor authentication or identity verification) are required. This endpoint is public; the magic link token in the query string is the credential. operationId: createBotSession x-latency-category: responsive tags: - Bot Signup x-endpoint-cost: medium security: [] parameters: - name: email in: query required: true description: Email address associated with the magic link token. schema: type: string format: email example: agent-owner@example.com - name: portal_redirect_token in: query required: true description: Single-use portal redirect (magic link) token, a UUIDv7 sent to the account owner's email. schema: type: string format: uuid example: 01890a7e-e2f7-7c3d-8dbb-9a2c5f3d1e0b responses: '200': description: Session created. Bot signup accounts receive a minimal token envelope. content: application/json: schema: $ref: '#/components/schemas/BotSessionResponse' example: data: api_v2_token: KEY0189A1B2C3D4E5F6071829AB3C4D5E_5FhZonmFvcw8Yq0dME27Bg '400': description: The account could not be initialized. content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: Account could not be initialized '401': description: Missing or invalid email or token, expired token, or the account is not eligible to sign in (inactive, suspended, not permitted to use magic links, or must use SSO). content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: Your sign-in link has expired. Please request a new one-time sign-in link. '403': description: Request blocked by security policy (for example, the caller's country is not accepted). content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: Your registration cannot be accepted as it does not comply with our security standards. You may contact support for assistance. '404': description: Bot signup is not available (freemium master switch disabled or the caller's country is not enabled). content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10005 /v2/bot_signup: post: summary: Register via bot signup description: Creates a freemium Telnyx account through the agentic signup flow. The request must carry a valid answer to a previously issued bot challenge (`bot_challenge_nonce` and `bot_challenge_answer`), accept the terms of service, and echo the exact terms-and-conditions and privacy-policy URLs returned by the challenge endpoint. When EU consent enforcement is enabled, `terms_of_service_eu` and `terms_and_conditions_eu_url` are also required. On success a one-time sign-in (magic) link is emailed to the address provided; if the email address belongs to an existing account, a sign-in link is sent instead of creating a duplicate account. `email` may only be omitted when placeholder-email registration is enabled server-side. This endpoint is public and unauthenticated, gated by the freemium feature flags and per-country availability, and subject to per-IP and per-domain registration limits. operationId: createBotSignup x-latency-category: responsive tags: - Bot Signup x-endpoint-cost: medium security: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BotSignupRequest' example: email: agent-owner@example.com terms_of_service: true terms_and_conditions_url: https://telnyx.com/terms-and-conditions-of-service privacy_policy_url: https://telnyx.com/privacy-policy bot_challenge_nonce: c6feda4e-6501-4db9-a21f-665e5b4ce2ba bot_challenge_answer: '35' responses: '200': description: Registration accepted and a magic link emailed. content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' example: success: true message: A one-time sign-in link has been sent to your email address. '400': description: Bot challenge parameters missing or verification failed, terms of service not accepted, or terms/privacy URLs missing or not matching the expected values. content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: Bot challenge parameters are required '403': description: Registration blocked by security policy (for example, registration from the caller's country is not accepted). content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: Your registration cannot be accepted as it does not comply with our security standards. You may contact support for assistance. '404': description: Bot signup is not available (freemium master switch disabled or the caller's country is not enabled). content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10005 '422': description: Validation failed (for example an invalid email address), or the IP address has reached its bot signup limit. content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - code: '10027' title: Unprocessable Entity detail: Email is invalid source: pointer: /email meta: url: https://developers.telnyx.com/docs/overview/errors/10027 '429': description: Too many registrations from this email domain. content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - code: '10011' title: Too many requests detail: You have exceeded the maximum number of allowed requests. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10011 /v2/bot_signup/resend_magic_link: post: summary: Resend a bot signup magic link description: Resends the one-time sign-in (magic) link for an eligible bot signup account. Eligibility (account exists, was registered through bot signup, is active, and has not exceeded the resend limit or rate window) is evaluated server-side; the response is intentionally uniform and does not reveal whether the account exists or whether a link was actually sent. This endpoint is public and unauthenticated, gated by the freemium feature flags and per-country availability. operationId: resendBotSignupMagicLink x-latency-category: responsive tags: - Bot Signup x-endpoint-cost: light security: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ResendMagicLinkRequest' example: email: agent-owner@example.com responses: '200': description: Uniform acknowledgement, returned whether or not a link was sent. content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' example: success: true message: A one-time sign-in link has been sent to your email address. '400': description: The JSON request body could not be parsed. content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: There was a problem in the JSON you submitted. Please check your formatting and try again. '403': description: Request blocked by security policy (for example, the caller's country is not accepted). content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - detail: Your registration cannot be accepted as it does not comply with our security standards. You may contact support for assistance. '404': description: Bot signup is not available (freemium master switch disabled or the caller's country is not enabled). content: application/json: schema: $ref: '#/components/schemas/bot-signup_ErrorResponse' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10005 /v2/mobile_phone_numbers: get: summary: List Mobile Phone Numbers operationId: listMobilePhoneNumbers tags: - Mobile Phone Numbers parameters: - name: page[number] in: query description: The page number to load schema: type: integer - name: page[size] in: query description: The size of the page schema: type: integer responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/MobilePhoneNumber' meta: $ref: '#/components/schemas/mobile_phone_numbers_PaginationMeta' '401': description: Unauthorized description: Retrieve a paginated list of mobile phone numbers on your account. /v2/mobile_phone_numbers/{id}: get: summary: Retrieve a Mobile Phone Number operationId: retrieveMobilePhoneNumber tags: - Mobile Phone Numbers parameters: - name: id in: path required: true description: The ID of the mobile phone number schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MobilePhoneNumber' '404': description: Resource not found description: Retrieve the details of a specific mobile phone number. patch: summary: Update a Mobile Phone Number operationId: updateMobilePhoneNumber tags: - Mobile Phone Numbers parameters: - name: id in: path required: true description: The ID of the mobile phone number schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MobilePhoneNumberUpdate' example: noise_suppression: false inbound_call_screening: disabled caller_id_name_enabled: false tags: - string call_forwarding: forwarding_type: always call_forwarding_enabled: false cnam_listing: cnam_listing_enabled: false call_recording: inbound_call_recording_enabled: false inbound_call_recording_channels: single inbound_call_recording_format: wav responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MobilePhoneNumber' '422': description: Unprocessable Entity description: Update the settings of a specific mobile phone number. /v2/mobile_voice_connections: get: summary: List Mobile Voice Connections operationId: listMobileVoiceConnections tags: - Mobile Voice Connections parameters: - name: page[number] in: query description: The page number to load schema: type: integer - name: page[size] in: query description: The size of the page schema: type: integer - name: filter[connection_name][contains] in: query description: Filter by connection name containing the given string schema: type: string - name: sort in: query description: Sort by field (e.g., created_at, connection_name, active). Prefix with - for descending order. schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/MobileVoiceConnection' meta: $ref: '#/components/schemas/mobile_voice_connections_PaginationMeta' '401': description: Unauthorized description: Retrieve a paginated list of mobile voice connections on your account. post: summary: Create a Mobile Voice Connection operationId: createMobileVoiceConnection tags: - Mobile Voice Connections requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MobileVoiceConnectionCreate' example: active: true connection_name: Telnyx Mobile Voice IMS webhook_api_version: '2' tags: - string outbound: channel_limit: 0 outbound_voice_profile_id: string inbound: channel_limit: 0 responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MobileVoiceConnection' '403': description: Unauthorized or Limit Reached '422': description: Unprocessable Entity description: Creates a new mobile voice connection with the provided configuration and returns the created connection. /v2/mobile_voice_connections/{id}: delete: summary: Delete a Mobile Voice Connection operationId: deleteMobileVoiceConnection tags: - Mobile Voice Connections parameters: - name: id in: path required: true description: The ID of the mobile voice connection schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MobileVoiceConnection' '404': description: Resource not found description: Delete a mobile voice connection from your account. get: summary: Retrieve a Mobile Voice Connection operationId: retrieveMobileVoiceConnection tags: - Mobile Voice Connections parameters: - name: id in: path required: true description: The ID of the mobile voice connection schema: type: string responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MobileVoiceConnection' '404': description: Resource not found description: Retrieve the details of a specific mobile voice connection. patch: summary: Update a Mobile Voice Connection operationId: updateMobileVoiceConnection tags: - Mobile Voice Connections parameters: - name: id in: path required: true description: The ID of the mobile voice connection schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MobileVoiceConnectionUpdate' example: active: false connection_name: string webhook_api_version: '1' webhook_timeout_secs: 0 tags: - string outbound: channel_limit: 0 outbound_voice_profile_id: string inbound: channel_limit: 0 responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/MobileVoiceConnection' '404': description: Resource not found '409': description: Conflict. Another update to this connection is still in progress. Wait and retry the request later. content: application/json: schema: type: object properties: errors: type: array items: type: object properties: detail: type: string example: errors: - detail: A previous update to this connection is still in progress. Please try again later. '422': description: Unprocessable Entity description: Update the settings of a specific mobile voice connection. /v2/payment/stored_payment_transactions: post: summary: Create a stored payment transaction operationId: createStoredPaymentTransaction tags: - Stored Payment Transactions x-endpoint-cost: light requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StoredPaymentTransactionRequest' example: amount: '120.00' responses: '200': description: Stored payment transaction created successfully content: application/json: schema: $ref: '#/components/schemas/StoredPaymentTransactionResponse' example: data: id: de06811a-2e43-4561-af5a-7d0a26e20aaa record_type: transaction amount_cents: 12000 processor_status: submitted_for_settlement amount_currency: USD created_at: '2026-02-25T10:00:00Z' auto_recharge: false transaction_processing_type: stored_payment '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/stored-payment-transactions_ErrorResponse' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. '403': description: Forbidden - insufficient permissions content: application/json: schema: $ref: '#/components/schemas/stored-payment-transactions_ErrorResponse' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. '422': description: Unprocessable entity content: application/json: schema: $ref: '#/components/schemas/stored-payment-transactions_ErrorResponse' example: errors: - code: '10027' title: Invalid amount format detail: Amount must include dollars and cents (e.g. "120.00"). meta: url: https://developers.telnyx.com/docs/overview/errors/10027 source: pointer: / x-latency-category: responsive description: Create a transaction that charges a stored payment method on the account. /v2/whatsapp/business_accounts: get: tags: - Whatsapp Business Accounts summary: List Whatsapp Business Accounts operationId: ListWabas parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: List of Whatsapp Business Accounts $ref: '#/components/responses/messaging_WabasListResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns WhatsApp Business Accounts linked to the authenticated Telnyx account. /v2/whatsapp/business_accounts/{id}: delete: tags: - Whatsapp Business Accounts summary: Delete a Whatsapp Business Account operationId: deleteWaba parameters: - $ref: '#/components/parameters/WabaId' responses: '204': description: Deleted 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Unlinks and deletes the specified WhatsApp Business Account resource from Telnyx. get: tags: - Whatsapp Business Accounts summary: Get a single Whatsapp Business Account operationId: GetSingleWaba parameters: - $ref: '#/components/parameters/WabaId' responses: '200': description: Whatsapp Business Account details $ref: '#/components/responses/WabaSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the configuration and status of the specified WhatsApp Business Account. /v2/whatsapp/business_accounts/{id}/phone_numbers: get: tags: - Whatsapp Business Accounts summary: List phone numbers for a WABA operationId: ListWabaPhones parameters: - $ref: '#/components/parameters/WabaId' - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: List of phone numbers $ref: '#/components/responses/messaging_WhatsappPhonesListResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns phone numbers registered under the specified WhatsApp Business Account. post: tags: - Whatsapp Phone Numbers summary: Initialize Whatsapp phone number verification operationId: InitializeWhatsappVerification parameters: - $ref: '#/components/parameters/WabaId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappPhoneNumberVerificationRequest' example: phone_number: string display_name: string verification_method: sms language: en_US responses: '204': description: Verification initiated 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Starts verification of a phone number for the specified WhatsApp Business Account using the requested verification method. /v2/whatsapp/business_accounts/{id}/settings: get: tags: - Whatsapp Business Accounts summary: Get WABA settings operationId: GetWabaSettings parameters: - $ref: '#/components/parameters/WabaId' responses: '200': description: WABA settings $ref: '#/components/responses/WabaSettingsResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns account-level settings for the specified WhatsApp Business Account. patch: tags: - Whatsapp Business Accounts summary: Update WABA settings operationId: PatchWabaSettings parameters: - $ref: '#/components/parameters/WabaId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PatchWabaSettingsRequest' responses: '200': description: Updated settings $ref: '#/components/responses/WabaSettingsResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the supplied account-level settings for the specified WhatsApp Business Account. /v2/whatsapp/message_templates: get: tags: - Whatsapp Message Templates summary: List Whatsapp message templates operationId: ListWhatsappTemplates parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter[waba_id] in: query schema: type: string description: Filter by WABA ID - name: filter[category] in: query schema: type: string enum: - MARKETING - UTILITY - AUTHENTICATION description: Filter by category - name: filter[status] in: query schema: type: string description: Filter by template status - name: filter[search] in: query schema: type: string description: Search templates by name responses: '200': description: Whatsapp templates list $ref: '#/components/responses/messaging_WhatsappTemplateListResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns WhatsApp message templates owned by the authenticated account, including their current review state. post: tags: - Whatsapp Message Templates summary: Create a Whatsapp message template operationId: PostWhatsappTemplate requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappCreateTemplateRequest' responses: '201': description: Template created $ref: '#/components/responses/WhatsappTemplateSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Creates a WhatsApp message template for review and subsequent use in template messages. /v2/whatsapp/phone_numbers: get: tags: - Whatsapp Phone Numbers summary: List Whatsapp phone numbers operationId: ListPhoneNumbers parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Phone numbers $ref: '#/components/responses/messaging_WhatsappPhonesListResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns WhatsApp phone numbers linked to the authenticated Telnyx account. /v2/whatsapp/phone_numbers/{phone_number}: delete: tags: - Whatsapp Phone Numbers summary: Delete a Whatsapp phone number operationId: DeleteWhatsappPhoneNumber parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '204': description: Phone number was successfully deleted 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Removes the specified phone number from Telnyx WhatsApp management. get: tags: - Whatsapp Phone Numbers x-hidden: true summary: Retrieve a WhatsApp phone number operationId: GetWhatsappPhoneNumber parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': $ref: '#/components/responses/WhatsappPhoneSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns one WhatsApp phone number linked to the authenticated Telnyx account. For a coexistence number in the `syncing` state, the response includes `sync_progress`. /v2/whatsapp/phone_numbers/{phone_number}/calling_settings: get: tags: - Whatsapp Phone Numbers summary: Get calling settings for a phone number operationId: GetWhatsappCallingSettings parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Calling settings $ref: '#/components/responses/WhatsappCallingSettingsResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the WhatsApp calling configuration for the specified phone number. patch: tags: - Whatsapp Phone Numbers summary: Enable or disable Whatsapp calling for a phone number operationId: PatchWhatsappCallingSettings parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappPatchCallingSettingsRequest' example: enabled: false responses: '200': description: Updated calling settings $ref: '#/components/responses/WhatsappCallingSettingsResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Enables or disables WhatsApp calling for the specified phone number. /v2/whatsapp/phone_numbers/{phone_number}/conversation_window: get: tags: - Whatsapp Phone Numbers summary: Get conversation window status for a phone number description: Returns whether the 24-hour conversation window is currently open for a given source/destination pair. If window_active is false, only template messages may be sent. operationId: GetWhatsappConversationWindow parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' - name: destination_number in: query required: true schema: type: string example: '+353894650851' description: Destination phone number in E.164 format responses: '200': $ref: '#/components/responses/WhatsappConversationWindowResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' /v2/whatsapp/phone_numbers/{phone_number}/conversational_components: get: tags: - Whatsapp Phone Numbers summary: Get phone number conversational components operationId: GetWhatsappConversationalComponents parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Conversational Components $ref: '#/components/responses/WhatsappConversationalComponentSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the conversational components configured for the specified WhatsApp phone number. patch: tags: - Whatsapp Phone Numbers summary: Update phone number conversational components operationId: PatchWhatsappConversationalComponents parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappUpdateConversationalComponentRequest' example: commands: - command: string description: string ice_breakers: - string responses: '200': description: Updated profile $ref: '#/components/responses/WhatsappConversationalComponentSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the conversational components configured for the specified WhatsApp phone number. /v2/whatsapp/phone_numbers/{phone_number}/profile: get: tags: - Whatsapp Phone Numbers summary: Get phone number business profile operationId: GetWhatsappProfile parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Profile $ref: '#/components/responses/WhatsappProfileSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the business profile displayed for the specified WhatsApp phone number. patch: tags: - Whatsapp Phone Numbers summary: Update phone number business profile operationId: PatchWhatsappProfile parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappUpdateProfileRequest' example: display_name: string about: string description: string category: string email: string website: string address: string profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: Updated profile $ref: '#/components/responses/WhatsappProfileSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the supplied business-profile fields for the specified WhatsApp phone number. /v2/whatsapp/phone_numbers/{phone_number}/profile/photo: delete: tags: - Whatsapp Phone Numbers summary: Delete Whatsapp profile photo operationId: DeleteWhatsappProfilePhoto parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '204': description: Photo deleted 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Removes the business-profile photo from the specified WhatsApp phone number. get: tags: - Whatsapp Phone Numbers summary: Get Whatsapp profile photo operationId: GetWhatsappProfilePhoto parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Profile photo content: application/json: schema: $ref: '#/components/schemas/WhatsappProfilePhotoResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the current business-profile photo for the specified WhatsApp phone number. post: tags: - Whatsapp Phone Numbers summary: Upload Whatsapp profile photo operationId: PostWhatsappProfilePhoto parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: multipart/form-data: schema: type: object required: - file properties: file: type: string format: binary description: Image file (JPEG recommended, max 10 MB) example: file: string responses: '200': description: Profile with updated photo $ref: '#/components/responses/WhatsappProfileSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Uploads and assigns a business-profile photo to the specified WhatsApp phone number. /v2/whatsapp/phone_numbers/{phone_number}/resend_verification: post: tags: - Whatsapp Phone Numbers summary: Resend verification code operationId: ResendWhatsappVerification parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappResendVerificationRequest' example: verification_method: sms responses: '204': description: Code resent 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Requests a new verification code for the specified WhatsApp phone number. /v2/whatsapp/phone_numbers/{phone_number}/verify: post: tags: - Whatsapp Phone Numbers summary: Submit verification code for a phone number operationId: VerifyWhatsappPhoneNumber parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappVerifyCodeRequest' example: code: string responses: '204': description: Verified successfully 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Submits the verification code received for the specified WhatsApp phone number. /v2/whatsapp/user_data: get: tags: - Whatsapp Business Accounts summary: Fetch Whatsapp user data operationId: GetWhatsappUserData responses: '200': description: Whatsapp user data $ref: '#/components/responses/WhatsappUserDataResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the WhatsApp user-data settings associated with the authenticated Telnyx account. patch: tags: - Whatsapp Business Accounts summary: Update Whatsapp user data operationId: PatchWhatsappUserData requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PatchWhatsappUserDataRequest' example: webhook_url: https://example.com webhook_failover_url: https://example.com responses: '200': description: Updated user data $ref: '#/components/responses/WhatsappUserDataResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the supplied WhatsApp user-data settings for the authenticated Telnyx account. /v2/whatsapp_message_templates/{id}: delete: tags: - Whatsapp Message Templates summary: Delete a Whatsapp message template operationId: DeleteWhatsappTemplate parameters: - $ref: '#/components/parameters/WhatsappTemplateId' responses: '204': description: Deleted 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Deletes the specified WhatsApp message template. get: tags: - Whatsapp Message Templates summary: Get a Whatsapp message template by ID operationId: GetWhatsappTemplate parameters: - $ref: '#/components/parameters/WhatsappTemplateId' responses: '200': description: Template details $ref: '#/components/responses/WhatsappTemplateSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Returns the content, components, language, and current review state of the specified WhatsApp message template. patch: tags: - Whatsapp Message Templates summary: Update a Whatsapp message template operationId: PatchWhatsappTemplate parameters: - $ref: '#/components/parameters/WhatsappTemplateId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappUpdateTemplateRequest' responses: '200': description: Updated template $ref: '#/components/responses/WhatsappTemplateSingleResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b' description: Updates the editable fields of the specified WhatsApp message template. /verifications/by_phone_number/{phone_number}: get: tags: - Verify summary: List verifications by phone number operationId: ListVerifications parameters: - required: true description: The phone number associated with the verifications to retrieve. schema: example: '+13035551234' type: string description: +E164 formatted phone number. name: phone_number in: path responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/ListVerificationsResponse' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Returns a paginated list of verifications associated with the specified phone number. /verifications/by_phone_number/{phone_number}/actions/verify: post: tags: - Verify summary: Verify verification code by phone number operationId: VerifyVerificationCodeByPhoneNumber parameters: - required: true description: The phone number associated with the verification code being verified. schema: example: '+13035551234' type: string description: +E164 formatted phone number. name: phone_number in: path requestBody: content: application/json: schema: $ref: '#/components/schemas/VerifyVerificationCodeRequestByPhoneNumber' required: true responses: '200': description: Expected verify response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifyVerificationCodeResponse' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Submits a verification code for the specified phone number and Verify profile. The response indicates whether the code was accepted or rejected. /verifications/call: post: tags: - Verify summary: Trigger Call verification operationId: CreateVerificationCall requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateVerificationRequestCall' required: true responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/CreateVerificationResponse' example: data: id: 12ade33a-21c0-473b-b055-b3c836e1c292 type: call record_type: verification phone_number: '+13035551234' verify_profile_id: 12ade33a-21c0-473b-b055-b3c836e1c292 timeout_secs: 300 status: pending created_at: '2020-09-14T17:03:32.965812' updated_at: '2020-09-14T17:03:32.965812' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Starts a verification for the specified phone number and delivers its code in a voice call using the selected Verify profile. Returns the pending verification record. /verifications/flashcall: post: tags: - Verify summary: Trigger Flash call verification operationId: CreateFlashcallVerification requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateVerificationRequest' required: true responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/CreateVerificationResponse' example: data: id: 12ade33a-21c0-473b-b055-b3c836e1c292 type: flashcall record_type: verification phone_number: '+13035551234' verify_profile_id: 12ade33a-21c0-473b-b055-b3c836e1c292 timeout_secs: 300 status: pending created_at: '2020-09-14T17:03:32.965812' updated_at: '2020-09-14T17:03:32.965812' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Starts a verification for the specified phone number and places a brief call with the code embedded in the caller ID. Returns the pending verification record. /verifications/sms: post: tags: - Verify summary: Trigger SMS verification operationId: CreateVerificationSms requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateVerificationRequestSMS' required: true responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/CreateVerificationResponse' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Starts a verification for the specified phone number and sends its code by SMS using the selected Verify profile. Returns the pending verification record. /verifications/whatsapp: post: tags: - Verify summary: Trigger WhatsApp verification operationId: CreateWhatsappVerification requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateVerificationRequestWhatsapp' required: true responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/CreateVerificationResponse' example: data: id: 12ade33a-21c0-473b-b055-b3c836e1c292 type: whatsapp record_type: verification phone_number: '+13035551234' verify_profile_id: 12ade33a-21c0-473b-b055-b3c836e1c292 custom_code: '43612' timeout_secs: 300 status: pending created_at: '2020-09-14T17:03:32.965812' updated_at: '2020-09-14T17:03:32.965812' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Starts a verification for the specified phone number and sends its code over WhatsApp using the selected Verify profile. Returns the pending verification record. /verifications/{verification_id}: get: tags: - Verify summary: Retrieve verification operationId: RetrieveVerification parameters: - required: true description: The identifier of the verification to retrieve. schema: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 name: verification_id in: path responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/RetrieveVerificationResponse' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Returns the verification identified by ID, including its channel, phone number, Verify profile, timeout, and current status. /verifications/{verification_id}/actions/verify: post: tags: - Verify summary: Verify verification code by ID operationId: VerifyVerificationCodeById parameters: - required: true description: The identifier of the verification to retrieve. schema: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 name: verification_id in: path requestBody: content: application/json: schema: $ref: '#/components/schemas/VerifyVerificationCodeRequestById' required: true responses: '200': description: Expected verify response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifyVerificationCodeResponse' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Checks the supplied code, or the supplied status for a custom-code verification, against the verification identified by ID. The response indicates whether the verification was accepted or rejected. /verified_numbers: get: tags: - Verified Numbers x-group-parameters: 'true' summary: List all Verified Numbers description: Gets a paginated list of Verified Numbers. operationId: ListVerifiedNumbers parameters: - name: page in: query required: false style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Use page[size] and page[number] in the query string. Originally: page[size], page[number]' schema: type: object properties: size: title: page[size] type: integer default: 25 number: title: page[number] type: integer default: 1 responses: '200': description: Expected response to a valid request. content: application/json: schema: $ref: '#/components/schemas/ListVerifiedNumbersResponse' '400': $ref: '#/components/responses/verified-numbers_GenericErrorResponse' '401': $ref: '#/components/responses/UnauthorizedRequestErrorResponse' '422': $ref: '#/components/responses/verified-numbers_UnprocessableEntityErrorResponse' post: tags: - Verified Numbers summary: Request phone number verification description: Initiates phone number verification procedure. Supports DTMF extension dialing for voice calls to numbers behind IVR systems. operationId: CreateVerifiedNumber requestBody: content: application/json: schema: title: Create Verified Number Request type: object required: - phone_number - verification_method properties: phone_number: example: '+15551234567' type: string verification_method: description: Verification method. type: string enum: - sms - call example: sms extension: example: ww243w1 type: string description: 'Optional DTMF extension sequence to dial after the call is answered. This parameter enables verification of phone numbers behind IVR systems that require extension dialing. Valid characters: digits 0-9, letters A-D, symbols * and #. Pauses: w = 0.5 second pause, W = 1 second pause. Maximum length: 50 characters. Only works with ''call'' verification method.' default: null maxLength: 50 pattern: ^[0-9A-D*#wW]*$ examples: sms_verification: summary: SMS verification value: phone_number: '+15551234567' verification_method: sms call_verification: summary: Call verification value: phone_number: '+15551234567' verification_method: call call_with_extension: summary: Call verification with DTMF extension description: Example for verifying a number behind an IVR system that requires extension dialing value: phone_number: '+15551234567' verification_method: call extension: ww243w1 required: true responses: '200': description: Expected response to a valid request. content: application/json: schema: $ref: '#/components/schemas/CreateVerifiedNumberResponse' '400': $ref: '#/components/responses/verified-numbers_GenericErrorResponse' '401': $ref: '#/components/responses/UnauthorizedRequestErrorResponse' '422': $ref: '#/components/responses/verified-numbers_UnprocessableEntityErrorResponse' /verified_numbers/{phone_number}: delete: tags: - Verified Numbers summary: Delete a verified number operationId: DeleteVerifiedNumber parameters: - required: true description: The phone number being deleted. schema: example: '+15551234567' type: string description: +E164 formatted phone number. name: phone_number in: path responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifiedNumberResponseDataWrapper' '400': $ref: '#/components/responses/verified-numbers_GenericErrorResponse' '401': $ref: '#/components/responses/UnauthorizedRequestErrorResponse' '404': $ref: '#/components/responses/verified-numbers_NotFoundErrorResponse' description: Remove a verified number from your account. get: tags: - Verified Numbers summary: Retrieve a verified number operationId: GetVerifiedNumber parameters: - required: true description: The phone number being requested. schema: example: '+15551234567' type: string description: +E164 formatted phone number. name: phone_number in: path responses: '200': description: Expected verifications response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifiedNumberResponseDataWrapper' '400': $ref: '#/components/responses/verified-numbers_GenericErrorResponse' '401': $ref: '#/components/responses/UnauthorizedRequestErrorResponse' '404': $ref: '#/components/responses/verified-numbers_NotFoundErrorResponse' description: Retrieve the details of a verified number on your account. /verified_numbers/{phone_number}/actions/verify: post: tags: - Verified Numbers summary: Submit verification code operationId: VerifyVerificationCode parameters: - required: true description: The phone number being verified. schema: example: '+15551234567' type: string description: +E164 formatted phone number. name: phone_number in: path requestBody: content: application/json: schema: title: Verify Verification Code Request type: object required: - verification_code properties: verification_code: example: '123456' type: string required: true responses: '200': description: Expected response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifiedNumberResponseDataWrapper' '400': $ref: '#/components/responses/verified-numbers_GenericErrorResponse' '401': $ref: '#/components/responses/UnauthorizedRequestErrorResponse' '404': $ref: '#/components/responses/verified-numbers_NotFoundErrorResponse' '422': $ref: '#/components/responses/verified-numbers_UnprocessableEntityErrorResponse' description: Submit the verification code received via the selected verification method to verify a phone number. /verify_profiles: get: tags: - Verify x-group-parameters: 'true' summary: List all Verify profiles description: Gets a paginated list of Verify profiles. operationId: ListProfiles parameters: - name: filter in: query required: false style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[name]' schema: type: object properties: name: title: filter[name] type: string description: Optional filter for profile names. - name: page in: query required: false style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: title: page[size] type: integer default: 25 number: title: page[number] type: integer default: 1 responses: '200': description: Expected Verify profile response to a valid request. content: application/json: schema: $ref: '#/components/schemas/ListVerifyProfilesResponse' '400': $ref: '#/components/responses/verify_GenericErrorResponse' post: tags: - Verify summary: Create a Verify profile description: Creates a new Verify profile to associate verifications with. operationId: CreateVerifyProfile requestBody: content: application/json: schema: title: Create Verify Profile Request type: object required: - name properties: name: example: Test Profile type: string language: type: string example: en-US webhook_url: type: string example: http://example.com/webhook webhook_failover_url: type: string example: http://example.com/webhook/failover sms: type: object $ref: '#/components/schemas/CreateVerifyProfileSMSRequest' additionalProperties: true call: type: object $ref: '#/components/schemas/CreateVerifyProfileCallRequest' additionalProperties: true flashcall: type: object $ref: '#/components/schemas/CreateVerifyProfileSettingsRequest' additionalProperties: true whatsapp: type: object $ref: '#/components/schemas/CreateVerifyProfileSettingsWhatsAppRequest' additionalProperties: true daily_spend_limit_enabled: type: boolean default: false description: Whether the daily spend limit is enforced for this verify profile. example: true daily_spend_limit: type: number minimum: 0 description: The maximum daily spend allowed on this verify profile, in USD. example: 100.0 required: true responses: '200': description: Expected Verify profile response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifyProfileResponseDataWrapper' '400': $ref: '#/components/responses/verify_GenericErrorResponse' /verify_profiles/templates: get: tags: - Verify summary: Retrieve Verify profile message templates description: List all Verify profile message templates. operationId: ListProfileMessageTemplates responses: '200': description: Expected Verify profile message template response to a valid request. content: application/json: schema: $ref: '#/components/schemas/ListVerifyProfileMessageTemplateResponse' '400': $ref: '#/components/responses/verify_GenericErrorResponse' '500': $ref: '#/components/responses/verify_GenericErrorResponse' post: tags: - Verify summary: Create message template description: Create a new Verify profile message template. operationId: CreateMessageTemplate requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateMessageTemplateRequest' required: true responses: '200': description: Expected message template response to a valid request. content: application/json: schema: $ref: '#/components/schemas/MessageTemplateResponseDataWrapper' '400': $ref: '#/components/responses/verify_GenericErrorResponse' /verify_profiles/templates/{template_id}: patch: tags: - Verify summary: Update message template description: Update an existing Verify profile message template. operationId: UpdateMessageTemplate parameters: - required: true description: The identifier of the message template to update. schema: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 name: template_id in: path requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateMessageTemplateRequest' required: true responses: '200': description: Expected message template response to a valid request. content: application/json: schema: $ref: '#/components/schemas/MessageTemplateResponseDataWrapper' '400': $ref: '#/components/responses/verify_GenericErrorResponse' /verify_profiles/{verify_profile_id}: delete: tags: - Verify summary: Delete Verify profile operationId: DeleteProfile parameters: - required: true description: The identifier of the Verify profile to delete. schema: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 name: verify_profile_id in: path responses: '200': description: Expected Verify profile response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifyProfileResponseDataWrapper' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Deletes the specified Verify profile and returns the deleted profile record. get: tags: - Verify summary: Retrieve Verify profile description: Returns the details of a single Verify profile by its ID, including its verification channel configuration. operationId: GetVerifyProfile parameters: - required: true description: The identifier of the Verify profile to retrieve. schema: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 name: verify_profile_id in: path responses: '200': description: Expected Verify profile response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifyProfileResponseDataWrapper' '400': $ref: '#/components/responses/verify_GenericErrorResponse' patch: tags: - Verify summary: Update Verify profile operationId: UpdateVerifyProfile parameters: - required: true description: The identifier of the Verify profile to update. schema: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 name: verify_profile_id in: path requestBody: content: application/json: schema: title: Update Verify Profile Request type: object properties: name: example: Test Profile type: string webhook_url: type: string example: http://example.com/webhook webhook_failover_url: type: string example: http://example.com/webhook/failover sms: type: object $ref: '#/components/schemas/UpdateVerifyProfileSMSRequest' additionalProperties: true call: type: object $ref: '#/components/schemas/UpdateVerifyProfileCallRequest' additionalProperties: true whatsapp: type: object $ref: '#/components/schemas/UpdateVerifyProfileSettingsWhatsAppRequest' additionalProperties: true language: type: string example: en-US daily_spend_limit_enabled: type: boolean description: Whether the daily spend limit is enforced for this verify profile. example: true daily_spend_limit: type: number minimum: 0 description: The maximum daily spend allowed on this verify profile, in USD. example: 100.0 required: true responses: '200': description: Expected Verify profile response to a valid request. content: application/json: schema: $ref: '#/components/schemas/VerifyProfileResponseDataWrapper' '400': $ref: '#/components/responses/verify_GenericErrorResponse' description: Updates the specified Verify profile's name, webhook destinations, language, daily spend limits, or channel-specific settings. Returns the updated profile. /virtual_cross_connects: get: summary: List all Virtual Cross Connects description: Returns a paginated list of the virtual cross connects on your account, with support for filtering. operationId: ListVirtualCrossConnects tags: - Virtual Cross Connects parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[network_id]' schema: type: object properties: network_id: type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 description: The associated network id to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/VirtualCrossConnectCombined' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a Virtual Cross Connect description: Create a new Virtual Cross Connect.

For AWS and GCE, you have the option of creating the primary connection first and the secondary connection later. You also have the option of disabling the primary and/or secondary connections at any time and later re-enabling them. With Azure, you do not have this option. Azure requires both the primary and secondary connections to be created at the same time and they can not be independantly disabled. operationId: CreateVirtualCrossConnect tags: - Virtual Cross Connects requestBody: content: application/json: schema: $ref: '#/components/schemas/VirtualCrossConnectCreate' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/VirtualCrossConnectCombined' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /virtual_cross_connects/coverage: get: summary: List Virtual Cross Connect Cloud Coverage description: List Virtual Cross Connects Cloud Coverage.

This endpoint shows which cloud regions are available for the `location_code` your Virtual Cross Connect will be provisioned in. operationId: ListVirtualCrossConnectCoverage tags: - Virtual Cross Connects parameters: - name: filters in: query style: deepObject explode: true description: 'Consolidated filters parameter (deepObject style). Originally: filters[available_bandwidth][contains]' schema: type: object properties: available_bandwidth: oneOf: - type: integer description: Filter by exact available bandwidth match - type: object properties: contains: type: integer description: Filter by available bandwidth containing the specified value additionalProperties: false description: Available bandwidth filtering operations additionalProperties: false - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[cloud_provider], filter[cloud_provider_region], filter[location.region], filter[location.site], filter[location.pop], filter[location.code]' schema: type: object properties: cloud_provider: type: string enum: - aws - azure - gce description: The Virtual Private Cloud provider. example: aws cloud_provider_region: type: string description: The region of specific cloud provider. example: us-east-1 location.region: type: string example: AMER description: The region of associated location to filter on. location.site: type: string example: SJC description: The site of associated location to filter on. location.pop: type: string example: SV1 description: The POP of associated location to filter on. location.code: type: string example: silicon_valley-ca description: The code of associated location to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/VirtualCrossConnectCoverage' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/netapps_GenericErrorResponse' default: $ref: '#/components/responses/netapps_GenericErrorResponse' x-latency-category: responsive /virtual_cross_connects/{id}: delete: summary: Delete a Virtual Cross Connect description: Deletes the specified virtual cross connect from your account. operationId: DeleteVirtualCrossConnect tags: - Virtual Cross Connects parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/VirtualCrossConnectCombined' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve a Virtual Cross Connect description: Returns the details of a single virtual cross connect by its identifier. operationId: GetVirtualCrossConnect tags: - Virtual Cross Connects parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/VirtualCrossConnectCombined' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update the Virtual Cross Connect description: Update the Virtual Cross Connect.

Cloud IPs can only be patched during the `created` state, as GCE will only inform you of your generated IP once the pending connection requested has been accepted. Once the Virtual Cross Connect has moved to `provisioning`, the IPs can no longer be patched.

Once the Virtual Cross Connect has moved to `provisioned` and you are ready to enable routing, you can toggle the routing announcements to `true`. operationId: UpdateVirtualCrossConnect tags: - Virtual Cross Connects parameters: - $ref: '#/components/parameters/ResourceId' requestBody: content: application/json: schema: $ref: '#/components/schemas/VirtualCrossConnectPatch' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/VirtualCrossConnectCombined' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /virtual_cross_connects_coverage: get: summary: List Virtual Cross Connect Cloud Coverage description: List Virtual Cross Connects Cloud Coverage.

This endpoint shows which cloud regions are available for the `location_code` your Virtual Cross Connect will be provisioned in. operationId: ListVirtualCrossConnectCoverage tags: - Virtual Cross Connects parameters: - name: filters in: query style: deepObject explode: true description: 'Consolidated filters parameter (deepObject style). Originally: filters[available_bandwidth][contains]' schema: type: object properties: available_bandwidth: oneOf: - type: integer description: Filter by exact available bandwidth match - type: object properties: contains: type: integer description: Filter by available bandwidth containing the specified value additionalProperties: false description: Available bandwidth filtering operations additionalProperties: false - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[cloud_provider], filter[cloud_provider_region], filter[location.region], filter[location.site], filter[location.pop], filter[location.code]' schema: type: object properties: cloud_provider: type: string enum: - aws - azure - gce description: The Virtual Private Cloud provider. example: aws cloud_provider_region: type: string description: The region of specific cloud provider. example: us-east-1 location.region: type: string example: AMER description: The region of associated location to filter on. location.site: type: string example: SJC description: The site of associated location to filter on. location.pop: type: string example: SV1 description: The POP of associated location to filter on. location.code: type: string example: silicon_valley-ca description: The code of associated location to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/netapps_VirtualCrossConnectCoverage' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /voice_clones: get: summary: List voice clones description: Returns a paginated list of voice clones belonging to the authenticated account. operationId: listVoiceClones tags: - Voice Clones parameters: - $ref: '#/components/parameters/voice-designs_PageNumber' - $ref: '#/components/parameters/voice-designs_PageSize' - $ref: '#/components/parameters/FilterName' - $ref: '#/components/parameters/FilterProvider' - $ref: '#/components/parameters/voice-designs_Sort' responses: '200': description: A paginated list of voice clones. content: application/json: schema: $ref: '#/components/schemas/VoiceCloneListResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' post: summary: Create a voice clone from a voice design description: Creates a new voice clone by capturing the voice identity of an existing voice design. The clone can then be used for text-to-speech synthesis. operationId: createVoiceClone tags: - Voice Clones requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VoiceCloneRequest' responses: '201': description: Voice clone created successfully. content: application/json: schema: $ref: '#/components/schemas/VoiceCloneResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice design not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '422': description: Unprocessable entity — validation error in the request body. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '502': description: Bad gateway — upstream voice cloning service is unavailable. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_clones/from_upload: post: summary: Create a voice clone from an audio file upload description: 'Creates a new voice clone by uploading an audio file directly. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best results, provide 5–60 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 — on-prem import in progress (Ultra model). Poll GET /voice_clones/{id} to check status. content: application/json: schema: $ref: '#/components/schemas/VoiceCloneResponse' '400': description: Bad request — the audio file is invalid, unsupported, or exceeds the size limit. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '422': description: Unprocessable entity — validation error in the request body. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '502': description: Bad gateway — upstream voice cloning service is unavailable. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_clones/{id}: delete: summary: Delete a voice clone description: Permanently deletes a voice clone. This action cannot be undone. operationId: deleteVoiceClone tags: - Voice Clones parameters: - name: id in: path required: true description: The voice clone UUID. schema: type: string format: uuid responses: '204': description: Voice clone deleted successfully. '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice clone not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' patch: summary: Update a voice clone description: Updates the name, language, or gender of a voice clone. operationId: updateVoiceClone tags: - Voice Clones parameters: - name: id in: path required: true description: The voice clone UUID. schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VoiceCloneUpdateRequest' responses: '200': description: Voice clone updated successfully. content: application/json: schema: $ref: '#/components/schemas/VoiceCloneResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice clone not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '422': description: Unprocessable entity — validation error in the request body. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_clones/{id}/sample: get: summary: Download voice clone audio sample description: Downloads the WAV audio sample that was used to create the voice clone. operationId: getVoiceCloneSample tags: - Voice Clones parameters: - name: id in: path required: true description: The voice clone UUID. schema: type: string format: uuid responses: '200': description: WAV audio sample binary. content: audio/wav: schema: type: string format: binary '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice clone not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_designs: get: summary: List voice designs description: Returns a paginated list of voice designs belonging to the authenticated account. operationId: listVoiceDesigns tags: - Voice Designs parameters: - $ref: '#/components/parameters/voice-designs_PageNumber' - $ref: '#/components/parameters/voice-designs_PageSize' - $ref: '#/components/parameters/FilterName' - $ref: '#/components/parameters/voice-designs_Sort' responses: '200': description: A paginated list of voice designs. content: application/json: schema: $ref: '#/components/schemas/VoiceDesignListResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' post: summary: Create or add a version to a voice design description: Creates a new voice design (version 1) when `voice_design_id` is omitted. When `voice_design_id` is provided, adds a new version to the existing design instead. A design can have at most 50 versions. operationId: createVoiceDesign tags: - Voice Designs requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VoiceDesignRequest' responses: '201': description: Voice design created or new version added successfully. content: application/json: schema: $ref: '#/components/schemas/VoiceDesignResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice design not found — the specified `voice_design_id` does not exist. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '409': description: Conflict — the voice design has reached the maximum of 50 versions. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '422': description: Unprocessable entity — validation error in the request body. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '502': description: Bad gateway — upstream voice synthesis service is unavailable. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_designs/{id}: delete: summary: Delete a voice design description: Permanently deletes a voice design and all of its versions. This action cannot be undone. operationId: deleteVoiceDesign tags: - Voice Designs parameters: - name: id in: path required: true description: The voice design UUID or name. schema: type: string responses: '204': description: Voice design deleted successfully. '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice design not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' get: summary: Get a voice design description: Returns the latest version of a voice design, or a specific version when `?version=N` is provided. The `id` parameter accepts either a UUID or the design name. operationId: getVoiceDesign tags: - Voice Designs parameters: - name: id in: path required: true description: The voice design UUID or name. schema: type: string - name: version in: query required: false description: Specific version number to retrieve. Defaults to the latest version. schema: type: integer minimum: 1 responses: '200': description: The requested voice design. content: application/json: schema: $ref: '#/components/schemas/VoiceDesignResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice design not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' patch: summary: Rename a voice design description: Updates the name of a voice design. All versions retain their other properties. operationId: updateVoiceDesign tags: - Voice Designs parameters: - name: id in: path required: true description: The voice design UUID or name. schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VoiceDesignUpdateRequest' responses: '200': description: Voice design renamed successfully. content: application/json: schema: $ref: '#/components/schemas/VoiceDesignUpdatedResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice design not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '422': description: Unprocessable entity — validation error in the request body. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_designs/{id}/sample: get: summary: Download voice design audio sample description: Downloads the WAV audio sample for the voice design. Returns the latest version's sample by default, or a specific version when `?version=N` is provided. The `id` parameter accepts either a UUID or the design name. operationId: getVoiceDesignSample tags: - Voice Designs parameters: - name: id in: path required: true description: The voice design UUID or name. schema: type: string - name: version in: query required: false description: Specific version number to download the sample for. Defaults to the latest version. schema: type: integer minimum: 1 responses: '200': description: WAV audio sample binary. content: audio/wav: schema: type: string format: binary '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice design or version not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_designs/{id}/versions/{version}: delete: summary: Delete a specific version of a voice design description: Permanently deletes a specific version of a voice design. The version number must be a positive integer. operationId: deleteVoiceDesignVersion tags: - Voice Designs parameters: - name: id in: path required: true description: The voice design UUID or name. schema: type: string - name: version in: path required: true description: The version number to delete. schema: type: integer minimum: 1 responses: '204': description: Voice design version deleted successfully. '400': description: Bad request — invalid version number. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '401': description: Unauthorized — missing or invalid bearer token. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' '404': description: Voice design or version not found. content: application/json: schema: $ref: '#/components/schemas/voice-designs_ErrorResponse' /voice_sdk_call_reports: get: tags: - Voice SDK Stats summary: List Voice SDK call reports description: Returns paginated raw call report stats JSON payloads stored for the authenticated user. The user is derived from Telnyx authentication, not from request parameters. operationId: ListVoiceSdkCallReports parameters: - $ref: '#/components/parameters/voice-sdk-debug_PageConsolidated' - $ref: '#/components/parameters/VoiceSdkCallReportSort' responses: '200': description: Paginated raw call report stats payloads. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportListResponse' examples: reports: summary: Call report list value: data: - call_id: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1 voice_sdk_id: VSDK1Cu-AUDpaCkbs5LKcSUK9jLZFcgqLdg voice_sdk_session_id: 0a52a677-9784-4841-ad31-9596c6e5b970 voice_sdk_id_decoded: region: us-central-1 user_agent: TelnyxRTC/2.24.0 (iOS 17.5) version: 2.24.0 telnyx_session_id: 9a0f6b0e-fb1f-44c9-9b53-7f81442b4c5f telnyx_leg_id: 2d0dd8f1-7d90-4f1f-b8e8-67f9fbdfe2bd stored_at: '2026-05-06T20:00:05Z' summary: callId: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1 stats: - intervalStartUtc: '2026-05-06T20:00:00Z' intervalEndUtc: '2026-05-06T20:00:05Z' audio: inbound: packetsReceived: 1840 packetsLost: 0 jitterAvg: 0.003 outbound: packetsSent: 1837 bytesSent: 293920 connection: roundTripTimeAvg: 0.041 bytesSent: 293920 bytesReceived: 312880 ice: state: succeeded nominated: true local: candidateType: host protocol: udp remote: candidateType: srflx protocol: udp transport: iceState: connected dtlsState: connected srtpCipher: AES_CM_128_HMAC_SHA1_80 logs: - timestamp: '2026-05-06T20:00:00Z' level: debug message: rtcpeer candidate selected context: candidateType: host protocol: udp flushReason: type: call-end segment: 0 user_id: 3307ca65-df56-4f15-8ba7-589d584d215b organization_id: 06a3dfbd-4988-4fb1-8d28-9b5d85ca624b meta: total_pages: 1 total_results: 1 page_number: 1 page_size: 20 '400': description: Bad request — invalid pagination or sort parameter. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse' '401': description: Authentication failed. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse' '500': description: Unexpected server error while listing reports. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse' /voice_sdk_call_reports/{call_id}: get: tags: - Voice SDK Stats summary: Retrieve Voice SDK call reports by call ID description: Returns raw call report stats JSON payloads stored for the authenticated user and `call_id`. The user is derived from Telnyx authentication, not from request parameters. operationId: GetVoiceSdkCallReport parameters: - $ref: '#/components/parameters/CallId' responses: '200': description: Raw call report stats payloads. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportsResponse' examples: reports: summary: Call reports value: - call_id: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1 voice_sdk_id: VSDK1Cu-AUDpaCkbs5LKcSUK9jLZFcgqLdg voice_sdk_session_id: 0a52a677-9784-4841-ad31-9596c6e5b970 voice_sdk_id_decoded: region: us-central-1 user_agent: TelnyxRTC/2.24.0 (iOS 17.5) version: 2.24.0 telnyx_session_id: 9a0f6b0e-fb1f-44c9-9b53-7f81442b4c5f telnyx_leg_id: 2d0dd8f1-7d90-4f1f-b8e8-67f9fbdfe2bd stored_at: '2026-05-06T20:00:05Z' summary: callId: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1 stats: - intervalStartUtc: '2026-05-06T20:00:00Z' intervalEndUtc: '2026-05-06T20:00:05Z' audio: inbound: packetsReceived: 1840 packetsLost: 0 jitterAvg: 0.003 outbound: packetsSent: 1837 bytesSent: 293920 connection: roundTripTimeAvg: 0.041 bytesSent: 293920 bytesReceived: 312880 ice: state: succeeded nominated: true local: candidateType: host protocol: udp remote: candidateType: srflx protocol: udp transport: iceState: connected dtlsState: connected srtpCipher: AES_CM_128_HMAC_SHA1_80 logs: - timestamp: '2026-05-06T20:00:00Z' level: debug message: rtcpeer candidate selected context: candidateType: host protocol: udp flushReason: type: call-end segment: 0 user_id: 3307ca65-df56-4f15-8ba7-589d584d215b organization_id: 06a3dfbd-4988-4fb1-8d28-9b5d85ca624b '400': description: Bad request — invalid path parameter. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse' '401': description: Authentication failed. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse' '404': description: No call report was found for the authenticated user and call ID. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse' '500': description: Unexpected server error while looking up the report. content: application/json: schema: $ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse' /web_search: post: summary: Web search description: 'Performs a real-time web search and returns structured, LLM-ready JSON results with titles, URLs, descriptions, and snippets. Supports filtering by domain, country, safe search, freshness, and live crawl. **Note:** `include_domains` and `exclude_domains` cannot be used in the same request. Use one or the other.' operationId: CreateWebSearch tags: - Web Search requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebSearchRequest' example: query: latest AI agent frameworks count: 10 country: US safesearch: moderate freshness: week include_domains: - arxiv.org - github.com livecrawl: false responses: '200': description: Successful search response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WebSearchResponse' example: data: results: web: - url: https://example.com/article title: Top AI Agent Frameworks in 2026 description: A comprehensive guide to the latest AI agent frameworks... snippets: - LangGraph is a framework for building stateful, multi-actor agents... thumbnail_url: https://example.com/thumb.jpg favicon_url: https://cdn.telnyx.com/favicon?domain=example.com&size=128 news: [] '400': $ref: '#/components/responses/web-search_BadRequest' '401': $ref: '#/components/responses/web-search_Unauthorized' '502': $ref: '#/components/responses/web-search_ProviderError' '504': $ref: '#/components/responses/ProviderTimeout' '500': $ref: '#/components/responses/web-search_InternalServerError' /web_search/contents: post: summary: Retrieve page contents description: 'Retrieves clean HTML or Markdown content from a list of URLs. Supports up to 20 URLs per request (public API limit). Specify which formats to return: `html`, `markdown`, `metadata`.' operationId: CreateWebSearchContents tags: - Contents requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContentsRequest' example: urls: - https://en.wikipedia.org/wiki/Artificial_intelligence formats: - markdown - metadata crawl_timeout: 10 max_age: null responses: '200': description: Successful content retrieval response. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ContentsResponse' example: data: results: - url: https://en.wikipedia.org/wiki/Artificial_intelligence title: Artificial intelligence - Wikipedia markdown: '# Artificial intelligence Artificial intelligence (AI) is...' metadata: site_name: Wikipedia favicon_url: https://cdn.telnyx.com/favicon?domain=en.wikipedia.org&size=128 '400': $ref: '#/components/responses/web-search_BadRequest' '401': $ref: '#/components/responses/web-search_Unauthorized' '502': $ref: '#/components/responses/web-search_ProviderError' '504': $ref: '#/components/responses/ProviderTimeout' '500': $ref: '#/components/responses/web-search_InternalServerError' /web_search/research: post: summary: Start research task description: 'Starts a deep research task that runs multiple searches, reads sources, and synthesizes an answer with citations. ## Synchronous mode (default) When `background` is `false` or omitted, the request blocks until the research completes and returns the answer with citations. This can take up to 120 seconds depending on `research_effort`. ## Asynchronous mode When `background` is `true`, the request returns immediately with a `task_id` and `status: pending`. Poll `GET /web_search/research/{task_id}` to check when the research completes and retrieve the answer.' operationId: CreateWebSearchResearch tags: - Research requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ResearchRequest' example: query: Compare the performance of RAG vs fine-tuning for domain-specific QA research_effort: standard max_sources: 20 background: false responses: '200': description: 'Research response. Shape depends on `background`: - **Synchronous** (`background` false/unset): returns `answer` + `citations`. - **Asynchronous** (`background` true): returns `task_id` + `status`.' content: application/json: schema: type: object properties: data: oneOf: - $ref: '#/components/schemas/ResearchResponseSync' - $ref: '#/components/schemas/ResearchResponseAsync' examples: sync: summary: Synchronous response (background=false) value: data: answer: RAG and fine-tuning serve different purposes... citations: - url: https://arxiv.org/abs/2401.15884 title: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks snippet: We show that RAG models produce more factually grounded responses... async: summary: Asynchronous response (background=true) value: data: task_id: bf3026a5-dd57-44dd-b922-200041be3a4b status: pending '400': $ref: '#/components/responses/web-search_BadRequest' '401': $ref: '#/components/responses/web-search_Unauthorized' '502': $ref: '#/components/responses/web-search_ProviderError' '504': $ref: '#/components/responses/ProviderTimeout' '500': $ref: '#/components/responses/web-search_InternalServerError' /web_search/research/{task_id}: get: summary: Get research task status description: Polls the status of a previously started asynchronous research task. When the status is `completed`, the response includes the answer and citations. When the status is `failed`, the response includes an error message. operationId: GetWebSearchResearchStatus tags: - Research parameters: - name: task_id in: path required: true description: 'The research task ID returned by `POST /web_search/research` with `background: true`.' schema: type: string maxLength: 200 example: bf3026a5-dd57-44dd-b922-200041be3a4b responses: '200': description: Research task status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ResearchTaskStatus' examples: completed: summary: Task completed value: data: task_id: bf3026a5-dd57-44dd-b922-200041be3a4b status: completed answer: RAG and fine-tuning serve different purposes... citations: - url: https://arxiv.org/abs/2401.15884 title: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks running: summary: Task still running value: data: task_id: bf3026a5-dd57-44dd-b922-200041be3a4b status: running failed: summary: Task failed value: data: task_id: bf3026a5-dd57-44dd-b922-200041be3a4b status: failed error: Provider request failed '401': $ref: '#/components/responses/web-search_Unauthorized' '404': $ref: '#/components/responses/web-search_NotFound' '502': $ref: '#/components/responses/web-search_ProviderError' '500': $ref: '#/components/responses/web-search_InternalServerError' /webhook_deliveries: get: description: Lists webhook_deliveries for the authenticated user summary: List webhook deliveries operationId: GetWebhookDeliveries tags: - Webhooks parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[status][eq], filter[event_type], filter[webhook][contains], filter[attempts][contains], filter[started_at][gte], filter[started_at][lte], filter[finished_at][gte], filter[finished_at][lte]' schema: type: object properties: status: type: object properties: eq: type: string enum: - delivered - failed example: delivered description: Return only webhook_deliveries matching the given `status` event_type: type: string example: call_initiated,call.initiated description: Return only webhook_deliveries matching the given value of `event_type`. Accepts multiple values separated by a `,`. webhook: type: object properties: contains: type: string example: call.initiated description: Return only webhook deliveries whose `webhook` component contains the given text attempts: type: object properties: contains: type: string example: https://fallback.example.com/webhooks description: Return only webhook_deliveries whose `attempts` component contains the given text started_at: type: object properties: gte: type: string example: '2019-03-29T11:10:00Z' description: Return only webhook_deliveries whose delivery started later than or at given ISO 8601 datetime lte: type: string example: '2019-03-29T11:10:00Z' description: Return only webhook_deliveries whose delivery started earlier than or at given ISO 8601 datetime finished_at: type: object properties: gte: type: string example: '2019-03-29T11:10:00Z' description: Return only webhook_deliveries whose delivery finished later than or at given ISO 8601 datetime lte: type: string example: '2019-03-29T11:10:00Z' description: Return only webhook_deliveries whose delivery finished earlier than or at given ISO 8601 datetime responses: '200': description: A paginated array of webhook_delivery attempts content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/webhook_delivery' meta: $ref: '#/components/schemas/PaginationMetaSimple' '401': description: Unauthorized '422': description: Unprocessable entity /webhook_deliveries/{id}: get: summary: Find webhook_delivery details by ID description: Provides webhook_delivery debug data, such as timestamps, delivery status and attempts. operationId: GetWebhookDelivery tags: - Webhooks parameters: - name: id in: path required: true description: Uniquely identifies the webhook_delivery. schema: type: string format: uuid example: C9C0797E-901D-4349-A33C-C2C8F31A92C2 responses: '200': description: Webhook delivery record. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/webhook_delivery' '401': description: Unauthorized '404': description: WebhookDelivery not found /whatsapp/business_accounts: get: tags: - Whatsapp Business Accounts summary: List Whatsapp Business Accounts operationId: ListWabas parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: List of Whatsapp Business Accounts $ref: '#/components/responses/WabasListResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve a list of the WhatsApp Business Accounts (WABAs) connected to your Telnyx account. /whatsapp/business_accounts/{id}: delete: tags: - Whatsapp Business Accounts summary: Delete a Whatsapp Business Account operationId: deleteWaba parameters: - $ref: '#/components/parameters/WabaId' responses: '204': description: Deleted 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Delete a WhatsApp Business Account connection from your Telnyx account. get: tags: - Whatsapp Business Accounts summary: Get a single Whatsapp Business Account operationId: GetSingleWaba parameters: - $ref: '#/components/parameters/WabaId' responses: '200': description: Whatsapp Business Account details $ref: '#/components/responses/WabaSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the details of a specific WhatsApp Business Account. /whatsapp/business_accounts/{id}/phone_numbers: get: tags: - Whatsapp Business Accounts summary: List phone numbers for a WABA operationId: ListWabaPhones parameters: - $ref: '#/components/parameters/WabaId' - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: List of phone numbers $ref: '#/components/responses/WhatsappPhonesListResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: List the phone numbers associated with a WhatsApp Business Account. post: tags: - Whatsapp Phone Numbers summary: Initialize Whatsapp phone number verification operationId: InitializeWhatsappVerification parameters: - $ref: '#/components/parameters/WabaId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappPhoneNumberVerificationRequest' example: phone_number: string display_name: string verification_method: sms language: en_US responses: '204': description: Verification initiated 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Start the verification process to register a phone number with a WhatsApp Business Account. /whatsapp/business_accounts/{id}/settings: get: tags: - Whatsapp Business Accounts summary: Get WABA settings operationId: GetWabaSettings parameters: - $ref: '#/components/parameters/WabaId' responses: '200': description: WABA settings $ref: '#/components/responses/WabaSettingsResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the settings of a WhatsApp Business Account. patch: tags: - Whatsapp Business Accounts summary: Update WABA settings operationId: PatchWabaSettings parameters: - $ref: '#/components/parameters/WabaId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PatchWabaSettingsRequest' responses: '200': description: Updated settings $ref: '#/components/responses/WabaSettingsResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Update the settings of a WhatsApp Business Account. /whatsapp/hosted_signups: get: tags: - Whatsapp Signup summary: List Whatsapp hosted signups operationId: ListWhatsappHostedSignups parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Whatsapp hosted signups list $ref: '#/components/responses/WhatsappHostedSignupListResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: List hosted signups created by the account, newest first. Expired hosted signups are included. post: tags: - Whatsapp Signup summary: Create a Whatsapp hosted signup operationId: CreateWhatsappHostedSignup requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappHostedSignupCreateRequest' example: app_id: '123456789012345' signup_type: coexistence responses: '200': description: Hosted signup created content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappHostedSignup' example: data: id: 0192345a-7b8c-7d9e-0f12-3456789abcde record_type: whatsapp_jwt app_id: '123456789012345' created_at: '2026-07-08T12:00:00Z' expires_at: '2026-07-09T12:00:00Z' jwt: eyJhbGciOiJSUzI1NiIs... url: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs... solution_id: '987654321098765' '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10015' title: Bad request detail: expires_at must be at most 3 days in the future 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Create a time-limited onboarding URL on the Telnyx-hosted Embedded Signup page for a Tech Provider's end customer. Set `signup_type` to `coexistence` to launch Meta's WhatsApp Business app coexistence flow instead of standard Cloud API onboarding. /whatsapp/hosted_signups/{id}: get: tags: - Whatsapp Signup summary: Get a Whatsapp hosted signup operationId: GetWhatsappHostedSignup parameters: - $ref: '#/components/parameters/WhatsappHostedSignupId' responses: '200': description: Whatsapp hosted signup $ref: '#/components/responses/WhatsappHostedSignupResponse' '404': description: Hosted signup not found content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve a hosted signup and its onboarding URL. /whatsapp/message_templates: get: tags: - Whatsapp Message Templates summary: List Whatsapp message templates operationId: ListWhatsappTemplates parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter[waba_id] in: query schema: type: string description: Filter by WABA ID - name: filter[category] in: query schema: type: string enum: - MARKETING - UTILITY - AUTHENTICATION description: Filter by category - name: filter[status] in: query schema: type: string description: Filter by template status - name: filter[search] in: query schema: type: string description: Search templates by name responses: '200': description: Whatsapp templates list $ref: '#/components/responses/WhatsappTemplateListResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the WhatsApp message templates for your WhatsApp Business Accounts. post: tags: - Whatsapp Message Templates summary: Create a Whatsapp message template operationId: PostWhatsappTemplate requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappCreateTemplateRequest' responses: '201': description: Template created $ref: '#/components/responses/WhatsappTemplateSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Create a new WhatsApp message template. Templates must be approved by WhatsApp before they can be used in messages. /whatsapp/message_templates/{id}: delete: tags: - Whatsapp Message Templates summary: Delete a Whatsapp message template operationId: DeleteWhatsappTemplate parameters: - $ref: '#/components/parameters/WhatsappTemplateId' responses: '204': description: Deleted 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Permanently deletes the specified WhatsApp message template from your account. get: tags: - Whatsapp Message Templates summary: Get a Whatsapp message template by ID operationId: GetWhatsappTemplate parameters: - $ref: '#/components/parameters/WhatsappTemplateId' responses: '200': description: Template details $ref: '#/components/responses/WhatsappTemplateSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve a specific WhatsApp message template by its ID. patch: tags: - Whatsapp Message Templates summary: Update a Whatsapp message template operationId: PatchWhatsappTemplate parameters: - $ref: '#/components/parameters/WhatsappTemplateId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappUpdateTemplateRequest' responses: '200': description: Updated template $ref: '#/components/responses/WhatsappTemplateSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Update an existing WhatsApp message template. /whatsapp/phone_numbers: get: tags: - Whatsapp Phone Numbers summary: List Whatsapp phone numbers operationId: ListPhoneNumbers parameters: - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Phone numbers $ref: '#/components/responses/WhatsappPhonesListResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve a list of the phone numbers registered for WhatsApp on your account. /whatsapp/phone_numbers/{id}/calling_routing: get: tags: - Whatsapp Phone Numbers summary: Get Connection ID for a WhatsApp Calling BYON number operationId: getWhatsappCallingRouting parameters: - $ref: '#/components/parameters/WhatsappCallingRoutingNumber' responses: '200': description: The stored routing connection. `connection_id` is `null` when no connection is routed, and also when the stored target is not a connection in the account, including a connection too new to have propagated yet. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappCallingRoutingData' required: - data examples: routed: summary: Number routed to a connection value: data: record_type: whatsapp_calling_routing phone_number: '+13125550100' connection_id: '1234567890' not_routed: summary: No routing connection value: data: record_type: whatsapp_calling_routing phone_number: '+13125550100' connection_id: null '403': description: The caller is not permitted to perform this action. Sub-users need read permission on connections. content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. '404': description: The account has no WhatsApp Calling number with this phone number, or the requesting account could not be found. A number just enabled for WhatsApp Calling returns 404 until it is provisioned, so retry. content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10003' title: Resource not found detail: The requested resource or URL could not be found. '422': description: The phone number is not valid. Errors are keyed by field. content: application/json: schema: $ref: '#/components/schemas/WhatsappCallingRoutingFieldErrors' examples: invalid_phone_number: summary: Phone number is not valid E.164 value: errors: phone_number: - is not a valid E.164 phone number 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: 'Retrieve the connection ID currently stored for a WhatsApp Calling BYON (Bring Your Own Number) phone number: the connection that inbound WhatsApp calls to the number are delivered to. Use it to check the result of `PATCH /whatsapp/phone_numbers/{id}/calling_routing`. A read made immediately after an update can still return the previous value. Sub-users need read permission on connections.' patch: tags: - Whatsapp Phone Numbers summary: Update Connection ID for a WhatsApp Calling BYON number operationId: updateWhatsappCallingRouting parameters: - $ref: '#/components/parameters/WhatsappCallingRoutingNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappPatchCallingRoutingRequest' examples: set: summary: Route the number to a connection value: connection_id: '1234567890' clear: summary: Clear the routing value: connection_id: null responses: '202': description: Update accepted for processing. The body echoes the requested routing; it does not confirm that the routing was applied. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappCallingRoutingData' required: - data examples: set: summary: Routing update accepted value: data: record_type: whatsapp_calling_routing phone_number: '+13125550100' connection_id: '1234567890' clear: summary: Routing clear accepted value: data: record_type: whatsapp_calling_routing phone_number: '+13125550100' connection_id: null '403': description: The caller is not permitted to perform this action. Sub-users need update permission on connections. content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. '404': description: The account has no WhatsApp Calling number with this phone number, or the requesting account could not be found. A number just enabled for WhatsApp Calling returns 404 until it is provisioned, so retry. content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10003' title: Resource not found detail: The requested resource or URL could not be found. '422': description: 'Validation failed. Errors are keyed by field: `phone_number` when the number is not valid E.164 or is active on Telnyx, and `connection_id` when it is missing, is not a positive integer ID, is not a connection in the account, or is a WhatsApp connection.' content: application/json: schema: $ref: '#/components/schemas/WhatsappCallingRoutingFieldErrors' examples: invalid_phone_number: summary: Phone number is not valid E.164 value: errors: phone_number: - is not a valid E.164 phone number telnyx_number: summary: Phone number is active on Telnyx value: errors: phone_number: - is a Telnyx number and routes via its own assignment missing_connection_id: summary: connection_id omitted from the body value: errors: connection_id: - is required invalid_connection_id: summary: connection_id is malformed or not a connection in the account value: errors: connection_id: - is invalid whatsapp_connection: summary: connection_id is a WhatsApp connection value: errors: connection_id: - cannot be a WhatsApp connection '503': description: The update could not be confirmed as queued for processing, so it may or may not be applied. The request can be retried. content: application/json: schema: $ref: '#/components/schemas/WhatsappCallingRoutingFieldErrors' example: errors: event: - could not be published 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: 'Set or clear the connection ID for a WhatsApp Calling BYON (Bring Your Own Number) phone number: the connection that inbound WhatsApp calls to the number are delivered to. The update is processed asynchronously. A `202` response means the request was accepted, not that the routing changed. Check the result with `GET /whatsapp/phone_numbers/{id}/calling_routing`, which can return the previous value immediately after an update. An update for a number that is not a WhatsApp Calling number in the account returns 404. The connection must belong to the same account and must not be a WhatsApp connection. Send `connection_id: null` to clear the routing; omitting `connection_id` is rejected. Numbers active on Telnyx are rejected, because they route through their own connection assignment. Sub-users need update permission on connections, and read permission to check the result with `GET`.' /whatsapp/phone_numbers/{phone_number}: delete: tags: - Whatsapp Phone Numbers summary: Delete a Whatsapp phone number operationId: DeleteWhatsappPhoneNumber parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '204': description: Phone number was successfully deleted 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Delete a phone number's WhatsApp registration from your account. get: tags: - Whatsapp Phone Numbers summary: Retrieve a WhatsApp phone number operationId: GetWhatsappPhoneNumber parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': $ref: '#/components/responses/WhatsappPhoneSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Returns one WhatsApp phone number linked to the authenticated Telnyx account. For a coexistence number in the `syncing` state, the response includes `sync_progress`. /whatsapp/phone_numbers/{phone_number}/calling_settings: get: tags: - Whatsapp Phone Numbers summary: Get calling settings for a phone number operationId: GetWhatsappCallingSettings parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Calling settings $ref: '#/components/responses/WhatsappCallingSettingsResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the WhatsApp calling settings for a phone number. patch: tags: - Whatsapp Phone Numbers summary: Enable or disable Whatsapp calling for a phone number operationId: PatchWhatsappCallingSettings parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappPatchCallingSettingsRequest' example: enabled: false responses: '200': description: Updated calling settings $ref: '#/components/responses/WhatsappCallingSettingsResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Enable or disable WhatsApp calling for a phone number and manage its calling configuration. /whatsapp/phone_numbers/{phone_number}/conversation_window: get: tags: - Whatsapp Phone Numbers summary: Get conversation window status for a phone number description: Returns whether the 24-hour conversation window is currently open for a given source/destination pair. If window_active is false, only template messages may be sent. operationId: GetWhatsappConversationWindow parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' - name: destination_number in: query required: true schema: type: string example: '+353894650851' description: Destination phone number in E.164 format responses: '200': $ref: '#/components/responses/WhatsappConversationWindowResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive /whatsapp/phone_numbers/{phone_number}/conversational_components: get: tags: - Whatsapp Phone Numbers summary: Get phone number conversational components operationId: GetWhatsappConversationalComponents parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Conversational Components $ref: '#/components/responses/WhatsappConversationalComponentSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the conversational components configuration for a WhatsApp phone number. patch: tags: - Whatsapp Phone Numbers summary: Update phone number conversational components operationId: PatchWhatsappConversationalComponents parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappUpdateConversationalComponentRequest' example: commands: - command: string description: string ice_breakers: - string responses: '200': description: Updated profile $ref: '#/components/responses/WhatsappConversationalComponentSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Update the conversational components configuration, such as welcome messages and commands, for a WhatsApp phone number. /whatsapp/phone_numbers/{phone_number}/profile: get: tags: - Whatsapp Phone Numbers summary: Get phone number business profile operationId: GetWhatsappProfile parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Profile $ref: '#/components/responses/WhatsappProfileSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the WhatsApp business profile associated with a phone number. patch: tags: - Whatsapp Phone Numbers summary: Update phone number business profile operationId: PatchWhatsappProfile parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappUpdateProfileRequest' example: display_name: string about: string description: string category: string email: string website: string address: string profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: Updated profile $ref: '#/components/responses/WhatsappProfileSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Update the WhatsApp business profile associated with a phone number. /whatsapp/phone_numbers/{phone_number}/profile/photo: delete: tags: - Whatsapp Phone Numbers summary: Delete Whatsapp profile photo operationId: DeleteWhatsappProfilePhoto parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '204': description: Photo deleted 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Delete the profile photo of a WhatsApp phone number. get: tags: - Whatsapp Phone Numbers summary: Get Whatsapp profile photo operationId: GetWhatsappProfilePhoto parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' responses: '200': description: Profile photo content: application/json: schema: $ref: '#/components/schemas/WhatsappProfilePhotoResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the profile photo of a WhatsApp phone number. post: tags: - Whatsapp Phone Numbers summary: Upload Whatsapp profile photo operationId: PostWhatsappProfilePhoto parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: multipart/form-data: schema: type: object required: - file properties: file: type: string format: binary description: Image file (JPEG recommended, max 10 MB) example: file: string responses: '200': description: Profile with updated photo $ref: '#/components/responses/WhatsappProfileSingleResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Upload a new profile photo for a WhatsApp phone number. /whatsapp/phone_numbers/{phone_number}/resend_verification: post: tags: - Whatsapp Phone Numbers summary: Resend verification code operationId: ResendWhatsappVerification parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappResendVerificationRequest' example: verification_method: sms responses: '204': description: Code resent 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Resend the verification code for a phone number that is being registered with WhatsApp. /whatsapp/phone_numbers/{phone_number}/verify: post: tags: - Whatsapp Phone Numbers summary: Submit verification code for a phone number operationId: VerifyWhatsappPhoneNumber parameters: - $ref: '#/components/parameters/WhatsappPhoneNumber' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappVerifyCodeRequest' example: code: string responses: '204': description: Verified successfully 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Submit the verification code to complete WhatsApp registration of a phone number. /whatsapp/signup: get: tags: - Whatsapp Signup summary: List Whatsapp signup sessions operationId: ListWhatsappSignupSessions parameters: - $ref: '#/components/parameters/PageConsolidated' - name: filter[waba_id] in: query schema: type: string description: Filter by Meta WABA ID - name: filter[customer_id] in: query schema: type: string description: Filter by the tech provider customer reference - name: filter[created_at][gte] in: query schema: type: string format: date-time description: Return sessions created at or after this time (RFC 3339) - name: filter[created_at][lte] in: query schema: type: string format: date-time description: Return sessions created at or before this time (RFC 3339) responses: '200': description: Whatsapp signup sessions list $ref: '#/components/responses/WhatsappSignupSessionListResponse' 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: List finished WhatsApp Embedded Signup sessions, with status `SUCCESS` or `FAILURE`, newest first. Use the `errors` of a failed session to see why provisioning stopped. /whatsapp/signup/{id}/status: get: tags: - Whatsapp Signup summary: Get Whatsapp signup session status operationId: GetWhatsappSignupSessionStatus parameters: - $ref: '#/components/parameters/WhatsappSignupSessionId' responses: '200': description: Whatsapp signup session $ref: '#/components/responses/WhatsappSignupSessionResponse' '404': description: Signup session not found content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found 4XX: $ref: '#/components/responses/management_messaging_GenericErrorResponse' x-latency-category: responsive description: Retrieve the current state and status of a WhatsApp Embedded Signup session. /wireguard_interfaces: get: summary: List all WireGuard Interfaces description: Returns a paginated list of the WireGuard interfaces on your account, with support for filtering. operationId: ListWireguardInterfaces tags: - WireGuard Interfaces parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[network_id]' schema: type: object properties: network_id: type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 description: The associated network id to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WireguardInterfaceRead' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a WireGuard Interface description: Create a new WireGuard Interface. Current limitation of 10 interfaces per user can be created. operationId: CreateWireguardInterface tags: - WireGuard Interfaces requestBody: content: application/json: schema: $ref: '#/components/schemas/WireguardInterfaceCreate' required: true responses: '202': description: Creation request accepted. Provisioning is asynchronous; poll GET /wireguard_interfaces/{id} with the returned id to check status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WireguardInterfaceRead' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /wireguard_interfaces/{id}: delete: summary: Delete a WireGuard Interface description: Deletes the specified WireGuard interface from its network. operationId: DeleteWireguardInterface tags: - WireGuard Interfaces parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WireguardInterfaceRead' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve a WireGuard Interfaces description: Returns the details of a single WireGuard interface by its identifier. operationId: GetWireguardInterface tags: - WireGuard Interfaces parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WireguardInterfaceRead' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /wireguard_peers: get: summary: List all WireGuard Peers description: Returns a paginated list of your WireGuard peers, with support for filtering. operationId: ListWireguardPeers tags: - WireGuard Interfaces parameters: - name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[wireguard_interface_id]' schema: type: object properties: wireguard_interface_id: type: string format: uuid example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 description: The id of the associated WireGuard interface to filter on. - $ref: '#/components/parameters/PageConsolidated' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WireguardPeer' meta: $ref: '#/components/schemas/PaginationMeta' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' post: summary: Create a WireGuard Peer description: Create a new WireGuard Peer. Current limitation of 5 peers per interface can be created. operationId: CreateWireguardPeer tags: - WireGuard Interfaces requestBody: content: application/json: schema: $ref: '#/components/schemas/WireguardPeerCreate' required: true responses: '202': description: Creation request accepted. Provisioning is asynchronous; poll GET /wireguard_peers/{id} with the returned id to check status. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WireguardPeer' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /wireguard_peers/{id}: delete: summary: Delete the WireGuard Peer description: Deletes the specified WireGuard peer from its interface. operationId: DeleteWireguardPeer tags: - WireGuard Interfaces parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WireguardPeer' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' get: summary: Retrieve the WireGuard Peer description: Returns the details of a single WireGuard peer by its identifier. operationId: GetWireguardPeer tags: - WireGuard Interfaces parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WireguardPeer' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' patch: summary: Update the WireGuard Peer description: Updates the specified WireGuard peer and returns the updated peer. operationId: UpdateWireguardPeer tags: - WireGuard Interfaces parameters: - $ref: '#/components/parameters/ResourceId' requestBody: content: application/json: schema: $ref: '#/components/schemas/WireguardPeerPatch' required: true responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WireguardPeer' '422': $ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc' default: $ref: '#/components/responses/GenericErrorResponse' /wireguard_peers/{id}/config: get: summary: Retrieve Wireguard config template for Peer description: Retrieve Wireguard config template for Peer operationId: GetWireguardPeerConfig tags: - WireGuard Interfaces parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: text/plain: schema: type: string example: '[Interface] PrivateKey = Address = 198.51.100.1/32 [Peer] PublicKey = qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU= AllowedIPs = 198.51.100.0/29 Endpoint = 203.0.113.0:51871 PersistentKeepalive = 25 ' '422': $ref: '#/components/responses/GenericErrorResponse' default: $ref: '#/components/responses/GenericErrorResponse' /wireless/detail/records/reports: get: summary: Get all Wireless Detail Records (WDRs) Reports description: Returns the WDR Reports that match the given parameters. operationId: GetWdrReports tags: - Reporting parameters: - $ref: '#/components/parameters/wireless_PageNumber' - $ref: '#/components/parameters/wireless_PageSize' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WdrReport' '401': description: Unauthorized default: $ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse' x-latency-category: responsive post: x-latency-category: background summary: Create a Wireless Detail Records (WDRs) Report description: 'Asynchronously create a report containing Wireless Detail Records (WDRs) for the SIM cards that consumed wireless data in the given time period. ' operationId: CreateWdrReport tags: - Reporting requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WdrReportRequest' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WdrReport' '422': $ref: '#/components/responses/sim-cards-monitoring_wireless_UnprocessableEntity' default: $ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse' /wireless/detail/records/reports/{id}: delete: summary: Delete a Wireless Detail Record (WDR) Report description: Permanently deletes the specified Wireless Detail Record (WDR) report. operationId: DeleteWdrReport tags: - Reporting parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WdrReport' '404': $ref: '#/components/responses/wireless_ResourceNotFound' default: $ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse' x-latency-category: responsive get: x-latency-category: background summary: Get a Wireless Detail Record (WDR) Report description: Returns a single Wireless Detail Record (WDR) report by its identifier, including its parameters and current status. operationId: GetWdrReport tags: - Reporting parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WdrReport' '404': $ref: '#/components/responses/wireless_ResourceNotFound' default: $ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse' /wireless/detail_records_reports: get: summary: Get all Wireless Detail Records (WDRs) Reports description: Returns the WDR Reports that match the given parameters. operationId: GetWdrReports tags: - Reporting parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WdrReport' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' post: x-latency-category: background summary: Create a Wireless Detail Records (WDRs) Report description: 'Asynchronously create a report containing Wireless Detail Records (WDRs) for the SIM cards that consumed wireless data in the given time period. ' operationId: CreateWdrReport tags: - Reporting requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WdrReportRequest' responses: '201': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WdrReport' '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /wireless/detail_records_reports/{id}: delete: summary: Delete a Wireless Detail Record (WDR) Report description: Permanently deletes the specified Wireless Detail Record (WDR) report. operationId: DeleteWdrReport tags: - Reporting parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WdrReport' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' get: x-latency-category: background summary: Get a Wireless Detail Record (WDR) Report description: Returns a single Wireless Detail Record (WDR) report by its identifier, including its parameters and current status. operationId: GetWdrReport tags: - Reporting parameters: - $ref: '#/components/parameters/ResourceId' responses: '200': description: Successful response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WdrReport' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /wireless/regions: get: tags: - Wireless Regions parameters: - name: product description: The product for which to list regions (e.g., 'public_ips', 'private_wireless_gateways'). schema: type: string example: public_ips in: query required: true responses: '200': description: A list of wireless regions content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/wireless_Region' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' operationId: WirelessRegionsGetAll summary: Get all wireless regions description: Retrieve all wireless regions for the given product. /wireless_blocklist_values: get: tags: - Wireless Blocklists parameters: - name: type description: The Wireless Blocklist type for which to list possible values (e.g., `country`, `mcc`, `plmn`). schema: type: string enum: - country - mcc - plmn example: country in: query required: true responses: '200': description: A list of possible wireless blocklist values content: application/json: schema: type: object properties: data: oneOf: - title: Country type: array items: $ref: '#/components/schemas/wireless_Country' - title: MCC type: array items: $ref: '#/components/schemas/wireless_MCC' - title: PLMN type: array items: $ref: '#/components/schemas/wireless_PLMN' required: - data examples: country: summary: Country values value: data: - country_code: US mcc: summary: MCC values value: data: - mcc: '310' plmn: summary: PLMN values value: data: - plmn: '310260' '422': description: Missing or invalid blocklist type content: application/json: schema: $ref: '#/components/schemas/wireless_Error_c5290d5308' examples: missingType: summary: Missing type value: code: '10027' meta: url: https://developers.telnyx.com/api/errors/10027 title: Missing required parameter source: pointer: /type detail: 'The ''type'' query parameter is required. Must be one of: country, mcc, plmn' invalidType: summary: Invalid type value: code: '10027' meta: url: https://developers.telnyx.com/api/errors/10027 title: Invalid filter type source: pointer: /type detail: 'Type must be one of: country, mcc, plmn' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' operationId: WirelessBlocklistsGetAll summary: Get all possible wireless blocklist values description: Retrieve all wireless blocklist values for a given blocklist type. The request returns `422` when `type` is missing or invalid. /wireless_blocklists: get: summary: Get all Wireless Blocklists description: Get all Wireless Blocklists belonging to the user. operationId: GetWirelessBlocklistsGateways tags: - Wireless Blocklists parameters: - $ref: '#/components/parameters/wireless_PageNumber_c5290d5308' - $ref: '#/components/parameters/wireless_PageSize_c5290d5308' - name: filter[name] description: The name of the Wireless Blocklist. in: query required: false schema: type: string example: my private gateway - name: filter[type] description: When the Private Wireless Gateway was last updated. in: query required: false schema: type: string example: country responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/wireless_WirelessBlocklist' meta: $ref: '#/components/schemas/PaginationMeta' '401': description: Unauthorized default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' post: summary: Create a Wireless Blocklist description: Create a Wireless Blocklist to prevent SIMs from connecting to certain networks. operationId: CreateWirelessBlocklist tags: - Wireless Blocklists requestBody: required: true content: application/json: schema: type: object properties: name: description: The name of the Wireless Blocklist. type: string example: My Wireless Blocklist type: description: The type of wireless blocklist. type: string enum: - country - mcc - plmn example: country values: description: Values to block. The values here depend on the `type` of Wireless Blocklist. type: array items: anyOf: - $ref: '#/components/schemas/CountryCode' - $ref: '#/components/schemas/MobileCountryCode' - $ref: '#/components/schemas/PLMNCode' example: - CA - US required: - name - type - values responses: '201': description: Wireless Blocklist created content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_WirelessBlocklist' example: data: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' name: North American Wireless Blocklist type: country values: - CA - MX - US '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /wireless_blocklists/{id}: delete: summary: Delete a Wireless Blocklist description: Permanently deletes the specified wireless blocklist from your account. The request returns `422` when the wireless blocklist is assigned to a SIM Card Group. operationId: DeleteWirelessBlocklist tags: - Wireless Blocklists parameters: - $ref: '#/components/parameters/WirelessBlocklistId' responses: '204': description: Wireless Blocklist deleted '404': $ref: '#/components/responses/ResourceNotFound' '422': description: Wireless Blocklist is still assigned content: application/json: schema: $ref: '#/components/schemas/wireless_Error_c5290d5308' examples: wirelessBlocklistAssigned: summary: Wireless Blocklist is still assigned value: code: '10027' meta: url: https://developers.telnyx.com/api/errors/10027 title: Cannot delete wireless blocklist source: pointer: /wireless_blocklist detail: This wireless blocklist is associated with one or more SIM Cards or SIM Card Groups. Remove any association(s) before deleting. default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' get: summary: Get a Wireless Blocklist description: Retrieve information about a Wireless Blocklist. operationId: GetWirelessBlocklist tags: - Wireless Blocklists parameters: - $ref: '#/components/parameters/WirelessBlocklistId' responses: '200': description: Successful Response content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_WirelessBlocklist' '404': $ref: '#/components/responses/ResourceNotFound' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' patch: summary: Update a Wireless Blocklist description: Updates the specified wireless blocklist. The update is processed asynchronously, so the request is accepted and completes in the background. operationId: UpdateWirelessBlocklist tags: - Wireless Blocklists parameters: - $ref: '#/components/parameters/WirelessBlocklistId' requestBody: required: true content: application/json: schema: type: object properties: name: description: The name of the Wireless Blocklist. type: string example: My Wireless Blocklist values: description: Values to block. The values here depend on the `type` of Wireless Blocklist. type: array items: anyOf: - $ref: '#/components/schemas/CountryCode' - $ref: '#/components/schemas/MobileCountryCode' - $ref: '#/components/schemas/PLMNCode' example: - CA - US responses: '202': description: Update accepted and processed asynchronously. Poll GET /wireless_blocklists/{id} to check the result. content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/wireless_WirelessBlocklist' '422': $ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308' default: $ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308' /x402/credit_account: post: summary: Settle a payment description: Settles an x402 payment using the quote ID and a signed payment authorization. The payment signature can be provided via the `PAYMENT-SIGNATURE` header or the `payment_signature` body parameter. Settlement is idempotent — submitting the same quote ID multiple times returns the existing transaction. operationId: settleX402Payment tags: - x402 Payment Transactions x-endpoint-cost: light parameters: - name: PAYMENT-SIGNATURE in: header description: Signed payment authorization for the quote. Alternative to providing `payment_signature` in the request body. required: false schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/X402SettleRequest' example: id: quote_abc123 payment_signature: 0xabc123... responses: '201': description: Payment settled successfully content: application/json: schema: $ref: '#/components/schemas/X402TransactionResponse' example: data: id: de06811a-2e43-4561-af5a-7d0a26e20aaa record_type: x402_transaction amount: '50.00' currency: USD status: settled quote_id: quote_abc123 tx_hash: 0xabc123def456... created_at: '2026-03-13T15:00:00Z' '200': description: Payment already settled (idempotent response) content: application/json: schema: $ref: '#/components/schemas/X402TransactionResponse' '400': description: Bad request — invalid signature, expired authorization, invalid nonce, or malformed payment payload content: application/json: schema: $ref: '#/components/schemas/X402SettlementErrorResponse' examples: invalid_signature: summary: Invalid payment signature value: errors: - code: invalid_signature title: Payment Failed detail: 'Payment failed: the payment signature is invalid. Please sign a new payment authorization.' expired_authorization: summary: Expired payment authorization value: errors: - code: expired_authorization title: Payment Failed detail: 'Payment failed: the payment authorization has expired. Please request a new quote and try again.' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. '403': description: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. '422': description: Unprocessable entity — missing required parameters or insufficient funds/allowance content: application/json: schema: $ref: '#/components/schemas/X402SettlementErrorResponse' examples: validation_error: summary: Missing required parameter value: errors: - code: unknown title: Invalid request detail: id is required insufficient_balance: summary: Insufficient wallet balance value: errors: - code: insufficient_balance title: Payment Failed detail: 'Payment failed: your wallet does not have enough USDC to complete this transaction. Please add funds and try again.' '500': description: Internal server error — facilitator unavailable, transaction failed on-chain, or unknown error content: application/json: schema: $ref: '#/components/schemas/X402SettlementErrorResponse' example: errors: - code: transaction_failed title: Payment Failed detail: Payment transaction failed on-chain. Your funds have not been transferred. Please try again or contact support. '502': description: Bad gateway — upstream settlement service error content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. '503': description: Service unavailable — facilitator or settlement timeout content: application/json: schema: $ref: '#/components/schemas/X402SettlementErrorResponse' example: errors: - code: facilitator_timeout title: Payment Failed detail: Payment processing timed out. Your funds have not been transferred. Please try again. x-latency-category: responsive /x402/credit_account/payments: get: summary: List x402 payments description: Returns a paginated list of the authenticated user's x402 payment transactions, newest first. Organization sub-users must have read permission on transactions; without it the list is empty. operationId: listX402Payments tags: - x402 Payment Transactions x-endpoint-cost: light parameters: - $ref: '#/components/parameters/x402-transactions_PageNumber' - $ref: '#/components/parameters/x402-transactions_PageSize' responses: '200': description: List of x402 payment transactions content: application/json: schema: $ref: '#/components/schemas/X402TransactionListResponse' example: data: - id: de06811a-2e43-4561-af5a-7d0a26e20aaa record_type: x402_transaction amount: '50.00' currency: USD status: settled quote_id: quote_abc123 tx_hash: 0xabc123def456... created_at: '2026-03-13T15:00:00Z' updated_at: '2026-03-13T15:00:00Z' - id: f8a1c2d3-4b5e-6789-abcd-ef0123456789 record_type: x402_transaction amount: '25.00' currency: USD status: settled quote_id: quote_def456 tx_hash: 0x789abcdef012... created_at: '2026-03-12T10:30:00Z' updated_at: '2026-03-12T10:30:00Z' meta: page_number: 1 page_size: 100 total_pages: 1 total_results: 2 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. '403': description: Forbidden — x402 payments not enabled or account tier ineligible content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. x-latency-category: responsive /x402/credit_account/payments/{id}: get: summary: Get an x402 payment description: Returns a single x402 payment transaction by ID. The transaction must belong to the authenticated user; organization sub-users must have read permission on transactions. Returns 404 if the transaction does not exist or belongs to another user. operationId: getX402Payment tags: - x402 Payment Transactions x-endpoint-cost: light parameters: - name: id in: path required: true description: The x402 payment transaction ID. schema: type: string format: uuid responses: '200': description: x402 payment transaction details content: application/json: schema: $ref: '#/components/schemas/X402TransactionDetailResponse' example: data: id: de06811a-2e43-4561-af5a-7d0a26e20aaa record_type: x402_transaction amount: '50.00' currency: USD status: settled quote_id: quote_abc123 tx_hash: 0xabc123def456... created_at: '2026-03-13T15:00:00Z' updated_at: '2026-03-13T15:00:00Z' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. '403': description: Forbidden — x402 payments not enabled or account tier ineligible content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. '404': description: Not found — the transaction does not exist or belongs to another user content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. meta: url: https://developers.telnyx.com/docs/overview/errors/10005 source: pointer: / x-latency-category: responsive /x402/credit_account/quote: post: summary: Create a payment quote description: Creates a payment quote for the specified USD amount. Returns payment details including the x402 payment requirements, network, and expiration time. The quote must be settled before it expires. operationId: createX402Quote tags: - x402 Payment Transactions x-endpoint-cost: light requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/X402QuoteRequest' example: amount_usd: '50.00' responses: '200': description: Quote created successfully content: application/json: schema: $ref: '#/components/schemas/X402QuoteResponse' example: data: id: quote_abc123 record_type: quote amount_usd: '50.00' amount_crypto: '50000000' network: eip155:8453 expires_at: '2026-03-13T15:05:00Z' payment_requirements: x402Version: 2 resource: url: https://api.telnyx.com/v2/x402/credit_account description: Payment of $50.00 USD mimeType: application/json accepts: - scheme: exact network: eip155:8453 amount: '50000000' asset: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' payTo: '0x1234567890abcdef1234567890abcdef12345678' maxTimeoutSeconds: 900 extra: quoteId: quote_abc123 facilitatorUrl: https://api.cdp.coinbase.com/platform/v2/x402 name: USD Coin version: '2' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. '403': description: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. '422': description: Unprocessable entity — invalid amount content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: unknown title: Invalid request detail: amount_usd must be at least 5.00 '502': description: Bad gateway — upstream payment service failed to create quote content: application/json: schema: $ref: '#/components/schemas/x402-transactions_ErrorResponse' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. x-latency-category: responsive components: callbacks: {} examples: Maximum20JobsAllowed: value: errors: - code: '10015' title: Bad Request detail: You can have at most 20 pending or in progress jobs source: pointer: /base meta: url: https://developers.telnyx.com/docs/overview/errors/10015 MaximumAllowedPhoneNumbers: value: errors: - code: '10015' title: Bad Request detail: 1000 numbers is the maximum allowed. source: pointer: /phone_numbers meta: url: https://developers.telnyx.com/docs/overview/errors/10015 MinimumAllowedPhoneNumbers: value: errors: - code: '10015' title: Bad Request detail: You must provide at least 1 phone number. source: pointer: /phone_numbers meta: url: https://developers.telnyx.com/docs/overview/errors/10015 MixedIdsAndE164Values: value: errors: - code: '10015' title: Bad Request detail: You must specify either all phone numbers in the e164 format or all as phone number ids source: pointer: /phone_numbers meta: url: https://developers.telnyx.com/docs/overview/errors/10015 NotAuthorized: value: errors: - code: '10006' title: Not authorized detail: You are not authorized to access the requested resource. meta: url: https://developers.telnyx.com/docs/overview/errors/10006 PhoneNumberOwnership: value: errors: - code: '10015' title: Bad Request detail: You must own every number in the bulk request source: pointer: /phone_numbers meta: url: https://developers.telnyx.com/docs/overview/errors/10015 PhoneNumbersMustBePresent: value: errors: - code: '10015' title: Bad Request detail: must be present source: pointer: /phone_numbers meta: url: https://developers.telnyx.com/docs/overview/errors/10015 headers: IdempotentReplayed: description: Present with value `true` when Edge replayed a stored successful response for the supplied Idempotency-Key. Omitted for first-time requests and error responses. schema: type: boolean enum: - true example: true PaymentReceipt: description: Machine Payment Protocol receipt returned on successful paid responses. Contains the receipt token identifying the settled payment; keep it for audit and reconciliation alongside the credited transaction. schema: type: string WWWAuthenticateChallenge: description: 'Machine Payment Protocol challenge(s) returned on a 402 response, following the HTTP WWW-Authenticate format (RFC 9110). Construct a payment credential from a challenge and retry the same request with an `Authorization: Payment ...` header carrying it.' schema: type: string links: {} parameters: 10dlc_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[telnyx_campaign_id], filter[telnyx_brand_id], filter[tcr_campaign_id], filter[tcr_brand_id]' schema: type: object properties: telnyx_campaign_id: type: string format: uuid example: f3575e15-32ce-400e-a4c0-dd78800c20b0 description: Filter results by the Telnyx Campaign id telnyx_brand_id: type: string format: uuid example: f3575e15-32ce-400e-a4c0-dd78800c20b0 description: Filter results by the Telnyx Brand id tcr_campaign_id: type: string example: CAMPID3 description: Filter results by the TCR Campaign id tcr_brand_id: type: string example: BRANDID description: Filter results by the TCR Brand id AccountSid: name: account_sid in: path required: true description: The UUID of the Telnyx account that owns the resource, for example `f5586561-8ff0-4291-a51b-c7dfe4139ff9`. The `account_sid` path segment is kept for Twilio API compatibility, but the value is a Telnyx account UUID, not a Twilio `AC...` SID. It must match the account that owns the API key used to authenticate the request, otherwise the endpoint returns `404`. The same value is sent as `AccountSid` in TeXML webhooks. schema: type: string example: f5586561-8ff0-4291-a51b-c7dfe4139ff9 After: name: after in: query required: false description: Return results with a cursor position after this value. schema: type: integer minimum: 0 default: 0 AgentId: name: id in: path required: true description: The Telnyx-assigned agent identifier. schema: type: string format: uuid ArtifactId: name: artifact_id in: path required: true description: Unique identifier for a meeting session artifact. schema: type: string examples: - mtgart_b2c3d4e5-f6a7-8901-bcde-f23456789012 AuthorizationBearer: name: authorization_bearer in: header schema: type: string description: Authenticates the request with your Telnyx API V2 KEY description: 'Format: Bearer ' AvatarId: name: avatar_id in: path required: true description: Stable identifier of a Telnyx stock avatar or an organization-owned custom avatar. schema: $ref: '#/components/schemas/AvatarId' BatchId: name: id in: path required: true description: Email validation batch UUID. schema: type: string format: uuid BcPageNumber: name: page[number] in: query description: 1-based page number. Out-of-range values return an empty page with correct meta. required: false schema: type: integer minimum: 1 default: 1 example: 1 BcPageSize: name: page[size] in: query description: Items per page. Maximum 250; values above are clamped to 250. required: false schema: type: integer minimum: 1 maximum: 250 default: 20 example: 20 BlocksPageAfter: name: page[after] in: query description: Opaque cursor (`Base.url_encode64` of `{"created_at","id"}`). Cursor mode; mutually exclusive with `page[number]` and `page[before]`. schema: type: string BlocksPageBefore: name: page[before] in: query description: Opaque cursor (see `page[after]`). Mutually exclusive with `page[after]` and `page[number]`. schema: type: string BlocksPageNumber: name: page[number] in: query description: Offset page number (≥1, default 1). schema: type: integer minimum: 1 default: 1 BlocksPageSize: name: page[size] in: query description: Page size (1–100, default 25). schema: type: integer minimum: 1 maximum: 100 default: 25 BrandId: name: id in: path required: true description: The Telnyx-assigned brand identifier. schema: type: string format: uuid BundleId: required: true schema: title: Bundle Id type: string format: uuid example: 8661948c-a386-4385-837f-af00f40f111a description: Billing bundle's ID, this is used to identify the billing bundle in the API. name: bundle_id in: path description: Unique identifier of the bundle. CallControlId: name: call_control_id description: Unique identifier and token for controlling the call in: path required: true schema: type: string CallId: name: call_id in: path required: true description: Call identifier used to retrieve reports owned by the authenticated user. schema: type: string format: uuid CallSid: name: call_sid in: path required: true description: The CallSid that identifies the call to update. schema: type: string CallSidOrParticipantLabel: name: call_sid_or_participant_label in: path required: true description: CallSid or Label of the Participant to update. schema: type: string ConferenceRegion: name: region in: query description: Region where the conference data is located required: false schema: type: string enum: - Australia - Europe - Middle East - US ConferenceSid: name: conference_sid in: path required: true description: The ConferenceSid that uniquely identifies a conference. schema: type: string ConferenceStatus: name: Status in: query required: false description: Filters conferences by status. schema: type: string enum: - init - in-progress - completed example: in-progress ConnectionId: name: connection_id description: Telnyx connection id in: path required: true schema: type: string example: '1293384261075731461' DateCreated: name: DateCreated in: query required: false description: Filters conferences by the creation date. Expected format is YYYY-MM-DD. Also accepts inequality operators, e.g. DateCreated>=2023-05-22. schema: type: string example: '>=2023-05-22' DateUpdated: name: DateUpdated in: query required: false description: Filters conferences by the time they were last updated. Expected format is YYYY-MM-DD. Also accepts inequality operators, e.g. DateUpdated>=2023-05-22. schema: type: string example: '>=2023-05-22' DirId: name: dir_id in: path description: The DIR id. Lowercase UUID. required: true schema: type: string format: uuid example: 16635d38-75a6-4481-82e8-69af60e05011 DocReqsRequirementId: name: id in: path description: Uniquely identifies the requirement_type record example: a9dad8d5-fdbd-49d7-aa23-39bb08a5ebaa required: true schema: type: string format: uuid DocReqsRequirementTypeId: name: id in: path description: Uniquely identifies the requirement_type record example: a38c217a-8019-48f8-bff6-0fdd9939075b required: true schema: type: string format: uuid DomainsPageSize: name: page[size] in: query required: false description: Number of records per page schema: type: integer minimum: 1 maximum: 100 default: 25 DraftId: name: draft_id in: path required: true description: Email draft UUID. schema: type: string format: uuid DraftInboxId: name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid EmailDomainDomainId: name: domain_id in: path required: true description: Email domain UUID schema: type: string format: uuid EmailDomainId: name: id in: path required: true description: Email domain UUID schema: type: string format: uuid EmailMessageId: name: id in: path required: true description: Email message UUID. schema: type: string format: uuid EndTime: name: EndTime in: query required: false description: Filters calls by their end date. Expected format is YYYY-MM-DD schema: type: string example: '2023-05-22' EndTime_gt: name: EndTime> in: query required: false description: Filters calls by their end date (after). Expected format is YYYY-MM-DD schema: type: string x-stainless-param: EndTime_gt example: '2023-05-22' EndTime_lt: name: EndTime< in: query required: false description: Filters calls by their end date (before). Expected format is YYYY-MM-DD schema: type: string x-stainless-param: EndTime_lt example: '2023-05-22' EnterpriseId: name: enterprise_id in: path description: The enterprise id. Lowercase UUID. required: true schema: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 FilterBasicStatusLifecycle: name: filter[status] description: Filter by a specific status of the resource's lifecycle. in: query required: false schema: type: string enum: - in-progress - completed - failed example: in-progress FilterCivicAddressesConsolidated: name: filter in: query style: deepObject explode: true description: Filter parameter for civic addresses (deepObject style). Supports filtering by country. schema: type: object properties: country: type: array example: - US - CA - MX - BR items: type: string description: The ISO 3166-1 alpha-2 country code (2 characters) description: The country (or countries) to filter addresses by. FilterConnectionsConsolidated: name: filter in: query style: deepObject explode: true description: Filter parameter for external connections (deepObject style). Supports filtering by connection_name, external_sip_connection, id, created_at, and phone_number. schema: type: object properties: connection_name: type: object properties: contains: type: string default: null example: My Connection description: If present, connections with connection_name containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. external_sip_connection: enum: - zoom - operator_connect type: string example: zoom description: If present, connections with external_sip_connection matching the given value will be returned. id: type: string default: null example: '1930241863466354012' description: If present, connections with id matching the given value will be returned. created_at: type: string default: null example: '2022-12-31' description: If present, connections with created_at date matching the given YYYY-MM-DD date will be returned. phone_number: type: object properties: contains: type: string example: '+15555555555' description: If present, connections associated with the given phone_number will be returned. A full match is necessary with a e164 format. description: 'Phone number filter for connections. Note: Despite the ''contains'' name, this requires a full E164 match per the original specification.' FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains], filter[used_as_emergency], filter[street_address][contains], filter[address_book][eq]' schema: type: object properties: street_address: type: object properties: contains: type: string description: If present, addresses with street_address containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. address_book: type: object properties: eq: type: string description: If present, only returns results with the address_book flag equal to the given value. customer_reference: oneOf: - type: string description: If present, addresses with customer_reference containing the given value will be returned. Matching is not case-sensitive. - type: object properties: eq: type: string description: Exact match for customer_reference. contains: type: string description: Partial match for customer_reference. Matching is not case-sensitive. used_as_emergency: type: string description: 'If set as ''true'', only addresses used as the emergency address for at least one active phone-number will be returned. When set to ''false'', the opposite happens: only addresses not used as the emergency address from phone-numbers will be returned.' FilterCreatedAfter: name: filter[created_after] in: query description: '`created_at > value` (ISO 8601).' schema: type: string format: date-time FilterCreatedBefore: name: filter[created_before] in: query description: '`created_at < value` (ISO 8601).' schema: type: string format: date-time FilterDocumentLinksConsolidated: name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter for document links (deepObject style). Originally: filter[linked_record_type], filter[linked_resource_id]' schema: type: object additionalProperties: false properties: linked_record_type: type: string example: porting_order description: The linked_record_type of the document to filter on. linked_resource_id: type: string format: uuid example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 description: The linked_resource_id of the document to filter on. FilterDocumentsConsolidated: name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter for documents (deepObject style). Originally: filter[filename][contains], filter[customer_reference][eq], filter[customer_reference][in][], filter[created_at][gt], filter[created_at][lt]' schema: type: object additionalProperties: false properties: filename: type: object additionalProperties: false properties: contains: type: string example: invoice description: Filter by string matching part of filename. customer_reference: type: object additionalProperties: false properties: eq: type: string example: MY REF 001 description: Filter documents by a customer reference. in: type: array items: type: string example: - MY REF 001 - MY REF 002 description: Filter documents by a list of customer references. created_at: type: object additionalProperties: false properties: gt: type: string format: date-time example: '2021-04-09T22:25:27.521Z' description: Filter by created at greater than provided value. lt: type: string format: date-time example: '2021-04-09T22:25:27.521Z' description: Filter by created at less than provided value. example: filename: contains: invoice customer_reference: in: - REF001 - REF002 created_at: gt: '2021-01-01T00:00:00Z' FilterDomainId: name: filter[domain_id] in: query description: Exact-match filter on domain_id (UUID). schema: type: string format: uuid FilterLogMessagesConsolidated: name: filter in: query style: deepObject explode: true description: Filter parameter for log messages (deepObject style). Supports filtering by external_connection_id and telephone_number with eq/contains operations. schema: type: object properties: external_connection_id: type: string example: 67ea7693-9cd5-4a68-8c76-abb3aa5bf5d2 description: The external connection ID to filter by or "null" to filter for logs without an external connection ID telephone_number: type: object properties: eq: type: string example: '+1234567890' description: The phone number to filter log messages for or "null" to filter for logs without a phone number x-format: E164 contains: type: string example: '+123' description: The partial phone number to filter log messages for. Requires 3-15 digits. description: Telephone number filter operations for log messages. Use 'eq' for exact matches or 'contains' for partial matches. FilterMobileNetworkOperatorsConsolidated: name: filter in: query explode: true description: 'Consolidated filter parameter for mobile network operators (deepObject style). Originally: filter[name][starts_with], filter[name][contains], filter[name][ends_with], filter[country_code], filter[mcc], filter[mnc], filter[tadig], filter[network_preferences_enabled]' schema: type: object properties: name: type: object properties: starts_with: type: string example: AT description: Filter by name starting with. contains: type: string example: T&T description: Filter by name containing match. ends_with: type: string example: T description: Filter by name ending with. description: Advanced name filtering operations country_code: type: string example: US description: Filter by exact country_code. mcc: type: string example: '310' description: Filter by exact MCC. mnc: type: string example: '410' description: Filter by exact MNC. tadig: type: string example: USACG description: Filter by exact TADIG. network_preferences_enabled: type: boolean example: true description: Filter by network_preferences_enabled. FilterName: name: filter[name] in: query required: false description: Case-insensitive substring filter on the name field. schema: type: string FilterOTAUpdatesConsolidated: name: filter in: query explode: true description: 'Consolidated filter parameter for OTA updates (deepObject style). Originally: filter[status], filter[sim_card_id], filter[type]' schema: type: object properties: status: type: string enum: - in-progress - completed - failed example: in-progress description: Filter by a specific status of the resource's lifecycle. sim_card_id: type: string description: The SIM card identification UUID. type: type: string enum: - sim_card_network_preferences example: sim_card_network_preferences description: Filter by type. FilterOrganizationUserEmail: name: filter[email] in: query description: Filter by email address (partial match) schema: type: string FilterOrganizationUserStatus: name: filter[user_status] in: query description: Filter by user status schema: type: string enum: - enabled - disabled - blocked FilterPhoneNumbersConsolidated: name: filter in: query style: deepObject explode: true required: false description: Filter parameter for phone numbers (deepObject style). Supports filtering by phone_number, civic_address_id, and location_id with eq/contains operations. schema: type: object properties: phone_number: type: object properties: eq: type: string example: '+19705555098' description: The phone number to filter by (exact match) contains: type: string example: '+1970' description: The phone number to filter by (partial match) civic_address_id: type: object properties: eq: type: string example: '19990261512338516954' description: The civic address ID to filter by location_id: type: object properties: eq: type: string example: '19995665508264022121' description: The location ID to filter by FilterProvider: name: filter[provider] in: query required: false description: Filter by voice synthesis provider. Case-insensitive. schema: type: string enum: - telnyx - minimax - Telnyx - Minimax FilterReason: name: filter[reason] in: query description: Exact-match filter on reason. schema: $ref: '#/components/schemas/Reason' FilterReleasesConsolidated: name: filter in: query style: deepObject explode: true description: Filter parameter for releases (deepObject style). Supports filtering by status, civic_address_id, location_id, and phone_number with eq/contains operations. schema: type: object properties: status: type: object properties: eq: type: array items: type: string enum: - pending_upload - pending - in_progress - complete - failed - expired - unknown example: - pending - in_progress description: The status of the release to filter by civic_address_id: type: object properties: eq: type: string example: '19990261512338516954' description: The civic address ID to filter by location_id: type: object properties: eq: type: string example: '19995665508264022121' description: The location ID to filter by phone_number: type: object properties: eq: type: string example: '+1234567890' description: The phone number to filter by x-format: E164 contains: type: string example: '+123' description: The partial phone number to filter by. Requires 3-15 digits. description: Phone number filter operations. Use 'eq' for exact matches or 'contains' for partial matches. FilterRequirementTypesConsolidated: name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter for requirement types (deepObject style). Originally: filter[name]' schema: type: object additionalProperties: false properties: name: type: object additionalProperties: false properties: contains: type: string example: utility bill description: Filters requirement types to those whose name contains a certain string. FilterRequirementsConsolidated: name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter for requirements (deepObject style). Originally: filter[country_code], filter[phone_number_type], filter[action]' schema: type: object additionalProperties: false properties: country_code: type: string example: US description: Filters results to those applying to a 2-character (ISO 3166-1 alpha-2) country code phone_number_type: type: string enum: - local - mobile - multipurpose - national - shared_cost - toll_free example: local description: Filters results to those applying to a specific phone_number_type action: type: string enum: - branded_calling - ordering - porting example: porting description: Filters requirements to those applying to a specific action. FilterSIMCardActionsConsolidated: name: filter in: query explode: true description: 'Consolidated filter parameter for SIM card actions (deepObject style). Originally: filter[sim_card_id], filter[status], filter[bulk_sim_card_action_id], filter[action_type]' schema: type: object properties: sim_card_id: type: string format: uuid example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9 description: A valid SIM card ID. status: type: string enum: - in-progress - completed - failed example: in-progress description: Filter by a specific status of the resource's lifecycle. bulk_sim_card_action_id: type: string format: uuid example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9 description: Filter by a bulk SIM card action ID. action_type: type: string enum: - enable - enable_standby_sim_card - disable - set_standby - remove_public_ip - set_public_ip - enable_voice - disable_voice example: disable description: Filter by action type. FilterSIMCardConsolidated: name: filter in: query explode: true description: 'Consolidated filter parameter for SIM cards (deepObject style). Originally: filter[iccid], filter[msisdn], filter[status], filter[tags]' schema: type: object properties: iccid: type: string example: '89310410106543789301' description: A search string to partially match for the SIM card's ICCID. msisdn: type: string example: '+13109976224' description: A search string to match for the SIM card's MSISDN. status: type: array items: type: string enum: - enabled - disabled - standby - data_limit_exceeded - unauthorized_imei description: Filter by a SIM card's status. tags: type: array items: type: string example: - personal - customers - active-customers description: "A list of SIM card tags to filter on.

\n If the SIM card contains all of\ \ the given tags they will be found.

\nFor example, if the SIM cards have the following\ \ tags:
    \n
  • ['customers', 'staff', 'test']\n
  • ['test']
  • \n
  • ['customers']
  • \n\
\nSearching for ['customers', 'test'] returns only the first because it's the only one with\ \ both tags.
Searching for test returns the first two SIMs, because both of them have such\ \ tag.
Searching for customers returns the first and last SIMs.
\n" FilterSIMCardGroupId: name: filter[sim_card_group_id] description: A valid SIM card group ID. schema: format: uuid type: string example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9 in: query FilterSIMCardId: name: filter[sim_card_id] description: A valid SIM card ID. schema: format: uuid type: string example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9 in: query FilterSIMCardOrdersConsolidated: name: filter in: query explode: true description: 'Consolidated filter parameter for SIM card orders (deepObject style). Originally: filter[created_at], filter[updated_at], filter[quantity], filter[cost.amount], filter[cost.currency], filter[address.id], filter[address.street_address], filter[address.extended_address], filter[address.locality], filter[address.administrative_area], filter[address.country_code], filter[address.postal_code]' schema: type: object properties: created_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: Filter by ISO 8601 formatted date-time string matching resource creation date-time. updated_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: Filter by ISO 8601 formatted date-time string matching resource last update date-time. quantity: type: integer example: 21 description: Filter orders by how many SIM cards were ordered. cost.amount: description: The total monetary amount of the order. type: string example: '2.53' cost.currency: description: Filter by ISO 4217 currency string. type: string example: USD address.id: type: string example: '1293384261075731499' description: Uniquely identifies the address for the order. address.street_address: type: string example: 600 Congress Avenue description: Returns entries with matching name of the street where the address is located. address.extended_address: type: string example: 14th Floor description: Returns entries with matching name of the supplemental field for address information. address.locality: type: string example: Austin description: Filter by the name of the city where the address is located. address.administrative_area: type: string example: TX description: Filter by state or province where the address is located. address.country_code: type: string example: US description: Filter by the mobile operator two-character (ISO 3166-1 alpha-2) origin country code. address.postal_code: type: string example: '78701' description: Filter by postal code for the address. FilterUploadsConsolidated: name: filter in: query style: deepObject explode: true required: false description: Filter parameter for uploads (deepObject style). Supports filtering by status, civic_address_id, location_id, and phone_number with eq/contains operations. schema: type: object properties: status: type: object properties: eq: type: array items: type: string enum: - pending_upload - pending - in_progress - success - error example: - pending_upload - pending description: The status of the upload to filter by civic_address_id: type: object properties: eq: type: string example: '19990261512338516954' description: The civic address ID to filter by location_id: type: object properties: eq: type: string example: '19995665508264022121' description: The location ID to filter by phone_number: type: object properties: eq: type: string example: '+19705555098' description: The phone number to filter by (exact match) contains: type: string example: '+1970' description: The phone number to filter by (partial match) ForceQuery: name: force in: query description: Force-delete a group with active suppressions. Only `"true"` (string) or `true` (bool) are truthy; all other values are false. schema: oneOf: - type: string enum: - 'true' - 'false' - type: boolean FqdnConnectionId: name: fqdn_connection_id in: path required: true schema: type: string description: The ID of the FQDN connection. FqdnId: name: id description: Identifies the resource. in: path required: true schema: type: string example: '1517907029795014409' x-format: int64 FriendlyName: name: FriendlyName in: query required: false description: Filters conferences by their friendly name. schema: type: string example: weekly_review_call From: name: From in: query required: false description: Filters calls by the from number. schema: type: string example: '+1312345678' FromTimestamp: name: from in: query description: Inclusive ISO 8601 start timestamp. Defaults to 30 days ago when omitted. required: false schema: type: string format: date-time GcbChannelNumberZoneId: name: channel_zone_id in: path description: Channel zone identifier required: true schema: type: string GcbChannelZoneId: name: channel_zone_id in: path description: Channel zone identifier required: true schema: type: string Id: name: id description: Identifies the resource. in: path required: true schema: format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 IdempotencyKey: name: Idempotency-Key in: header required: false description: Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return 400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in the key. schema: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_-]{1,255}$ example: 8e03978e-40d5-43e8-bc93-6894a57f9326 IfMatch: name: If-Match in: header required: true schema: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ description: Exact quoted resource-version ETag; an exact intermediary-weakened echo W/"n" is accepted. Wildcard, combined and malformed validators are rejected; stale 412; missing 428. HTTP field names are case-insensitive. Replayed idempotent result is checked first. InboxIdPathParam: name: inbox_id in: path required: true description: Email inbox UUID. schema: type: string format: uuid IncludeCancelledAccounts: name: include_cancelled_accounts in: query required: false description: Specifies if cancelled accounts should be included in the results. schema: type: boolean example: true default: false IncludeGroups: name: include_groups in: query description: When set to true, includes the groups array for each user in the response. The groups array contains objects with id and name for each group the user belongs to. schema: type: boolean default: false IncludeICCIDs: name: include_iccids in: query description: It includes a list of associated ICCIDs. schema: type: boolean default: false example: true IncludeSIMCardGroup: name: include_sim_card_group in: query description: It includes the associated SIM card group object in the response when present. schema: type: boolean default: false example: true IntId: name: id description: Identifies the resource. in: path required: true schema: type: string example: '1293384261075731499' IpId: name: id description: Identifies the type of resource. in: path required: true schema: format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 Limit: name: limit in: query required: false description: Maximum number of results to return per page. schema: type: integer minimum: 1 maximum: 1000 default: 100 MediaName: name: media_name description: Uniquely identifies a media resource. in: path required: true schema: type: string MeetingSessionId: name: id in: path required: true description: Unique identifier for the meeting session. schema: type: string examples: - mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890 MessageIdPathParam: name: message_id in: path required: true description: Inbound message UUID. schema: type: string format: uuid MessagingProfileId: name: id in: path description: The id of the messaging profile to retrieve required: true schema: type: string format: uuid NumberLookupType: name: type in: query required: false description: Specifies the type of number lookup to be performed 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' WhatsappHostedSignupId: name: id in: path required: true schema: type: string description: Hosted signup ID returned when the hosted signup was created WhatsappPhoneNumber: name: phone_number in: path required: true schema: type: string description: Phone number (E.164 format) WhatsappSignupSessionId: name: id in: path required: true schema: type: string description: Signup session ID WhatsappTemplateId: name: id in: path required: true schema: type: string description: Whatsapp message template ID WirelessBlocklistId: name: id description: Identifies the wireless blocklist. in: path required: true schema: format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 address_id: name: address_id description: Identifies a civic address or a location. in: path required: true schema: format: uuid type: string example: 318fb664-d341-44d2-8405-e6bfb9ced6d9 ai-gateway-resources_IdempotencyKey: name: Idempotency-Key in: header required: true schema: type: string minLength: 1 maxLength: 128 pattern: ^[A-Za-z0-9_-]+$ description: 24h, scoped by account+method+path. Same key/body returns same outcome; changed body 409; in-progress 409 with Retry-After. Token-create replay returns 200 metadata WITHOUT secret. ai-gateway-resources_PageNumber: name: page[number] in: query required: false schema: type: integer minimum: 1 default: 1 description: '' ai-gateway-resources_PageSize: name: page[size] in: query required: false schema: type: integer minimum: 1 maximum: 100 default: 20 description: '' ai-gateway-spend_PageNumber: name: page[number] in: query required: false schema: type: integer minimum: 1 default: 1 description: '' ai-gateway-spend_PageSize: name: page[size] in: query required: false schema: type: integer minimum: 1 maximum: 100 default: 20 description: '' audio_format: name: audio_format in: query required: false description: Audio output format override. Supported for Telnyx models. The `Ultra` model outputs PCM at 24kHz s16le or MP3 at 128kbps 24kHz. schema: type: string enum: - pcm - wav - mp3 audit-logs_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[created_before], filter[created_after]' schema: type: object properties: created_before: type: string format: date-time example: '2021-01-09T00:00:00Z' description: Filter for audit events created before a specific date. created_after: type: string format: date-time example: '2021-01-09T00:00:00Z' description: Filter for audit events created after a specific date. audit-logs_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]' schema: type: object properties: number: type: integer example: 1 description: Page number to load. size: type: integer example: 10 description: Number of items per page. bundle-pricing_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Supports filtering by country_iso and resource. Examples: filter[country_iso]=US or filter[resource]=+15617819942' schema: type: object properties: country_iso: title: Filter[Country Iso] type: array items: type: string example: US description: Filter by country code. resource: title: Filter[Resource] type: array items: type: string description: Filter by resource. example: '+15617819942' description: Filter by resource. bundle-pricing_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page. number: type: integer minimum: 1 default: 1 description: The page number to load. call-control_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[application_name][contains], filter[outbound.outbound_voice_profile_id], filter[leg_id], filter[application_session_id], filter[connection_id], filter[product], filter[failed], filter[from], filter[to], filter[name], filter[type], filter[occurred_at][eq/gt/gte/lt/lte], filter[status]' schema: type: object properties: application_name: type: object description: Application name filters properties: contains: type: string default: 'null' description: If present, applications with application_name containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. additionalProperties: false outbound.outbound_voice_profile_id: type: string example: '1293384261075731499' description: Identifies the associated outbound voice profile. x-format: int64 leg_id: type: string format: uuid description: The unique identifier of an individual call leg. application_session_id: type: string format: uuid description: The unique identifier of the call session. A session may include multiple call leg events. connection_id: type: string description: The unique identifier of the conection. product: type: string enum: - call_control - fax - texml example: texml description: Filter by product. failed: type: boolean example: false description: Delivery failed or not. from: type: string example: '+12025550142' description: Filter by From number. to: type: string example: '+12025550142' description: Filter by To number. name: type: string description: If present, conferences will be filtered to those with a matching `name` attribute. Matching is case-sensitive type: type: string enum: - command - webhook example: webhook description: Event type occurred_at: type: object description: Event occurred_at filters properties: eq: type: string example: '2019-03-29T11:10:00Z' description: 'Event occurred_at: equal' gt: type: string example: '2019-03-29T11:10:00Z' description: 'Event occurred_at: greater than' gte: type: string example: '2019-03-29T11:10:00Z' description: 'Event occurred_at: greater than or equal' lt: type: string example: '2019-03-29T11:10:00Z' description: 'Event occurred_at: lower than' lte: type: string example: '2019-03-29T11:10:00Z' description: 'Event occurred_at: lower than or equal' additionalProperties: false status: type: string enum: - init - in_progress - completed description: If present, conferences will be filtered by status. call-control_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size], page[number]' schema: type: object properties: after: type: string default: 'null' description: Opaque identifier of next page before: type: string default: 'null' description: Opaque identifier of previous page limit: type: integer minimum: 1 maximum: 250 default: 20 description: Limit of records per single page size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load call-recordings_ConnectionId: name: connection_id description: Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource. in: path required: true schema: type: string call-recordings_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page. number: type: integer minimum: 1 default: 1 description: The page number to load. call-scripting_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[outbound_voice_profile_id], filter[friendly_name]' schema: type: object properties: outbound_voice_profile_id: type: string example: '1293384261075731499' description: Identifies the associated outbound voice profile. friendly_name: type: string default: 'null' description: If present, applications with friendly_name containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. call-scripting_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 250 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load calls_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string calls_Page: name: Page in: query required: false description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken. schema: type: integer example: '1' calls_PageSize: name: PageSize in: query required: false description: The number of records to be displayed on a page schema: type: integer example: '10' collections_PageSize: name: page[size] in: query required: false description: Number of results per page. Defaults to 20. schema: type: integer minimum: 1 maximum: 100 default: 20 example: 20 conference-participants_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string conferences_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string conferences_Page: name: Page in: query required: false description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken. schema: type: integer example: '1' conferences_PageSize: name: PageSize in: query required: false description: The number of records to be displayed on a page schema: type: integer example: '10' connections_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id]' schema: type: object properties: connection_name: type: object description: Filter by connection_name using nested operations properties: contains: type: string default: null description: If present, connections with connection_name containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. fqdn: type: string default: null description: If present, connections with an `fqdn` that equals the given value will be returned. Matching is case-sensitive, and the full string must match. outbound_voice_profile_id: type: string example: '1293384261075731499' description: Identifies the associated outbound voice profile. x-format: int64 connections_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 250 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load connections_SortConnection: name: sort in: query description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\ \ in descending order add the - prefix.

\nThat is:
    \n
  • \n connection_name:\ \ sorts the result by the\n connection_name field in ascending order.\n
  • \n\n
  • \n -connection_name:\ \ sorts the result by the\n connection_name field in descending order.\n
  • \n

If not\ \ given, results are sorted by created_at in descending order." schema: type: string enum: - created_at - connection_name - active example: connection_name default: created_at connections_id: name: id description: Identifies the resource. in: path required: true schema: type: string example: '1293384261075731499' x-format: int64 customer_service_record_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number][eq], filter[phone_number][in][], filter[status][eq], filter[status][in][], filter[created_at][lt], filter[created_at][gt]' schema: type: object properties: phone_number: type: object properties: eq: type: string example: '+12441239999' description: Filters records to those with a specified number. in: type: array items: type: string example: '+12441239999' description: Filters records to those with at least one number in the list. status: type: object properties: eq: type: string enum: - pending - completed - failed example: pending description: Filters records to those with a specific status. in: type: array items: type: string enum: - pending - completed - failed example: pending description: Filters records to those with a least one status in the list. created_at: type: object properties: lt: type: string format: date-time example: '2020-01-01T00:00:00Z' description: Filters records to those created before a specific date. gt: type: string format: date-time example: '2020-01-01T00:00:00Z' description: Filters records to those created after a specific date. customer_service_record_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load disable_cache: name: disable_cache in: query required: false description: When `true`, bypass the audio cache and generate fresh audio. schema: type: boolean default: false documents_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load email_PageNumber: name: page[number] in: query required: false description: Page number to return (offset pagination) schema: type: integer minimum: 1 default: 1 email_PageSize: name: page_size in: query description: Number of results to return. Defaults to 25; maximum is 100. Invalid values are clamped to the valid range. required: false schema: type: integer minimum: 1 maximum: 100 default: 25 emergency_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load endpointing: name: endpointing in: query required: false description: Silence duration (in milliseconds) that triggers end-of-speech detection. When set, the engine uses this value to determine when a speaker has stopped talking. Supported by `xAI`, `Deepgram`, `Google`, `Speechmatics`, and `Soniox`. `Soniox` accepts values between 500 and 3000. Other engines may not support this parameter. schema: type: integer example: 500 external-voice-integrations_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 250 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load external-voice-integrations_id: name: id description: Identifies the resource. in: path required: true schema: type: string example: '1293384261075731499' x-format: int64 id: name: id description: Identifies the resource. in: path required: true schema: type: string example: '1293384261075731499' input_format: name: input_format in: query required: true description: The format of input audio stream. schema: type: string enum: - mp3 - wav - linear16 - linear32 example: mp3 interim_results: name: interim_results in: query required: false description: Whether to receive interim transcription results. schema: type: boolean example: true keyterm: name: keyterm in: query required: false description: A key term to boost in the transcription. The engine will be more likely to recognize this term. Can be specified multiple times for multiple terms. schema: type: string example: Telnyx keywords: name: keywords in: query required: false description: Comma-separated list of keywords to boost in the transcription. The engine will prioritize recognition of these words. schema: type: string example: Telnyx,SIP,WebRTC language: name: language in: query required: false description: The language spoken in the audio stream. For `cohere/ar-stt`, this must be `ar` or `en` — unlike other engines, Cohere does not auto-detect the language, and rejects unsupported values including `auto`; omitting it defaults to `ar`. schema: type: string example: en-US legacy_published_texml_siprec_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string managed-accounts_FilterConsolidated: name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[email][contains], filter[email][eq], filter[organization_name][contains], filter[organization_name][eq], filter[status][eq]' schema: type: object additionalProperties: false properties: email: type: object additionalProperties: false properties: contains: type: string description: If present, email containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. eq: type: string description: If present, only returns results with the email matching exactly the value given. organization_name: type: object additionalProperties: false properties: contains: type: string description: If present, only returns results with the organization_name containing the given value. Matching is not case-sensitive. Requires at least three characters. eq: type: string description: If present, only returns results with the organization_name matching exactly the value given. status: type: object additionalProperties: false properties: eq: type: string enum: - all - active - enabled - cancelled - disabled - blocked example: enabled description: If present, only returns managed accounts with the status matching exactly the value given. Use enabled or disabled to filter accounts by whether they are currently able to use Telnyx services. example: email: contains: john organization_name: eq: Example Company LLC managed-accounts_Sort: name: sort in: query required: false description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\ \ in descending order add the - prefix.

\nThat is:
    \n
  • \n email: sorts\ \ the result by the\n email field in ascending order.\n
  • \n\n
  • \n -email:\ \ sorts the result by the\n email field in descending order.\n
  • \n

If not given, results\ \ are sorted by created_at in descending order." schema: type: string enum: - created_at - email example: email default: created_at media-streaming_ConnectionId: name: connection_id description: Uniquely identifies a Telnyx application (Call Control). in: path required: true schema: type: string model: name: model in: query description: The specific model to use within the selected transcription engine. schema: oneOf: - $ref: '#/components/schemas/azure_models' - $ref: '#/components/schemas/deepgram_models' - $ref: '#/components/schemas/google_models' - $ref: '#/components/schemas/telnyx_models' - $ref: '#/components/schemas/xai_models' - $ref: '#/components/schemas/speechmatics_models' - $ref: '#/components/schemas/soniox_models' - $ref: '#/components/schemas/parakeet_models' - $ref: '#/components/schemas/humain_models' - $ref: '#/components/schemas/reson8_models' - $ref: '#/components/schemas/cohere_ar_stt_models' model_id: name: model_id in: query required: false description: 'Model identifier for the chosen provider. Examples: `Ultra`, `KokoroTTS` (Telnyx); `Polly.Generative` (AWS).' schema: type: string notifications_FilterConsolidated: name: filter in: query style: deepObject explode: true required: false description: 'Consolidated filter parameter (deepObject style). Originally: filter[associated_record_type][eq], filter[channel_type_id][eq], filter[notification_profile_id][eq], filter[notification_channel][eq], filter[notification_event_condition_id][eq], filter[status][eq]' schema: type: object properties: associated_record_type: type: object properties: eq: type: string enum: - account - phone_number example: phone_number description: Filter by the associated record type channel_type_id: type: object properties: eq: type: string enum: - webhook - sms - email - voice example: webhook description: Filter by the id of a channel type notification_profile_id: type: object properties: eq: type: string example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a description: Filter by the id of a notification profile notification_channel: type: object properties: eq: type: string example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a description: Filter by the id of a notification channel notification_event_condition_id: type: object properties: eq: type: string example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a description: Filter by the id of a notification channel status: type: object properties: eq: type: string enum: - enabled - enable-received - enable-pending - enable-submtited - delete-received - delete-pending - delete-submitted - deleted example: enable-received description: The status of a notification setting notifications_Id: name: id in: path description: The id of the resource. required: true schema: type: string format: uuid numbers_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load numbers_PageConsolidated_73c9788e53: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load outbound-voice-profiles_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[name][contains]' schema: type: object properties: name: type: object properties: contains: type: string example: office-profile description: Optional filter on outbound voice profile name. description: Name filtering operations outbound-voice-profiles_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page. number: type: integer minimum: 1 default: 1 description: The page number to load. phone_number_id: name: phone_number_id description: A phone number's ID via the Telnyx API in: path required: true schema: type: string example: '1234567889' porting-order_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_order_id], filter[support_key], filter[status], filter[phone_number], filter[activation_status], filter[portability_status]' schema: type: object properties: porting_order_id: type: array items: type: string format: uuid example: f3575e15-32ce-400e-a4c0-dd78800c20b0 description: Filter results by a list of porting order ids support_key: oneOf: - type: string example: sr_a12345 description: Filter by exact support key match (eq operation) - type: array items: type: string example: sr_a12345 description: Filter by multiple support keys (in operation) description: 'Filter results by support key(s). Originally: filter[support_key][eq], filter[support_key][in][]' status: oneOf: - type: string enum: - draft - in-process - submitted - exception - foc-date-confirmed - cancel-pending - ported - cancelled example: in-process description: Filter by single status - type: array items: type: string enum: - draft - in-process - submitted - exception - foc-date-confirmed - cancel-pending - ported - cancelled example: - in-process - submitted description: Filter by multiple statuses (in operation) description: 'Filter porting orders by status(es). Originally: filter[status], filter[status][in][]' phone_number: type: array items: type: string example: '+12003151212' description: Filter results by a list of phone numbers activation_status: $ref: '#/components/schemas/PortingOrderActivationStatus' description: Filter results by activation status portability_status: $ref: '#/components/schemas/PortabilityStatus' description: Filter results by portability status porting-order_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load programmable-fax_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[application_name][contains], filter[outbound_voice_profile_id]' schema: type: object properties: application_name: type: object properties: contains: type: string example: fax-app description: If present, applications with application_name containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. description: Application name filtering operations outbound_voice_profile_id: type: string example: '1293384261075731499' description: Identifies the associated outbound voice profile. programmable-fax_SortApplication: name: sort in: query description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\ \ in descending order add the - prefix.

\nThat is:
    \n
  • \n application_name:\ \ sorts the result by the\n application_name field in ascending order.\n
  • \n\n
  • \n -application_name:\ \ sorts the result by the\n application_name field in descending order.\n
  • \n

If not\ \ given, results are sorted by created_at in descending order." schema: type: string enum: - created_at - application_name - active example: application_name default: created_at pronunciation_dict_id: name: id in: path required: true description: The UUID of the pronunciation dictionary. schema: type: string format: uuid example: c215a3e1-be41-4701-97e8-1d3c22f9a5b7 provider: name: provider in: query required: false description: TTS provider. Defaults to `telnyx` if not specified. Ignored when `voice` is provided. schema: type: string enum: - aws - telnyx - azure - elevenlabs - minimax - resemble - xai - humain - soniox default: telnyx push-notifications_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page. number: type: integer minimum: 1 default: 1 description: The page number to load. queues_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string queues_Page: name: Page in: query required: false description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken. schema: type: integer example: '1' queues_PageSize: name: PageSize in: query required: false description: The number of records to be displayed on a page schema: type: integer example: '10' rcs-registration_IdempotencyKey: name: Idempotency-Key in: header required: true description: A caller-generated key containing letters, numbers, underscores, or hyphens. Reuse the same key and request body when retrying the same logical agent creation. schema: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_-]+$ recordings_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string recordings_Page: name: Page in: query required: false description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken. schema: type: integer example: '1' recordings_PageSizeTexml: name: PageSize in: query required: false description: The number of records to be displayed on a page schema: type: integer example: '10' redact: name: redact in: query required: false description: Enable redaction of sensitive information (e.g., PCI data, SSN) from transcription results. Supported values depend on the transcription engine. schema: type: string example: pci release_id: name: release_id description: Identifies a Release request in: path required: true schema: format: uuid type: string example: 7b6a6449-b055-45a6-81f6-f6f0dffa4cc6 sample_rate: name: sample_rate in: query required: false description: Audio sample rate in Hz. Required when `input_format` is a raw encoding (`linear16`, `linear32`) — those formats carry no header metadata. Ignored for container formats (`mp3`, `wav`), which self-describe their rate. schema: type: integer example: 16000 socket_id: name: socket_id in: query required: false description: Client-provided socket identifier for tracking. If not provided, one is generated server-side. schema: type: string streams_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string telephony-credentials_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[name], filter[status], filter[resource_id], filter[sip_username]' schema: type: object properties: tag: type: string description: Filter by tag name: type: string description: Filter by name status: type: string description: Filter by status resource_id: type: string description: Filter by resource_id sip_username: type: string description: Filter by sip_username telephony-credentials_IdempotencyKey: description: 'Unique key for safely retrying the same logical request. Generate a UUID v4 for each operation and reuse it only when retrying that operation with the same request body. Valid characters: A-Z, a-z, 0-9, -, and _. Length: 1-255 characters. Do not include sensitive data in the key.' in: header name: Idempotency-Key required: false example: 8e03978e-40d5-43e8-bc93-6894a57f9326 schema: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_-]{1,255}$ telephony-credentials_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]' schema: type: object properties: number: type: integer minimum: 1 default: 1 description: The page number to load size: type: integer minimum: 1 maximum: 250 default: 50 description: The size of the page ticket_id: name: ticket_id description: Identifies an Upload request in: path required: true schema: format: uuid type: string example: 7b6a6449-b055-45a6-81f6-f6f0dffa4cc6 transcription_engine: name: transcription_engine in: query required: true description: The transcription engine to use for processing the audio stream. schema: type: string enum: - Azure - Deepgram - Google - Telnyx - xAI - Speechmatics - Soniox - Parakeet - Humain - Reson8 - Cohere example: Telnyx transcriptions_AccountSid: name: account_sid in: path required: true description: The id of the account the resource belongs to. schema: type: string transcriptions_PageSize: name: PageSize in: query required: false description: The number of records to be displayed on a page schema: type: integer example: '10' user-addresses_FilterConsolidated: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains], filter[street_address][contains]' schema: type: object properties: customer_reference: type: object description: Filter user addresses via the customer reference. Supports both exact matching (eq) and partial matching (contains). Matching is not case-sensitive. properties: eq: type: string description: Filter user addresses via exact customer reference match. Matching is not case-sensitive. contains: type: string description: If present, user addresses with customer_reference containing the given value will be returned. Matching is not case-sensitive. street_address: type: object description: Filter user addresses via street address. Supports partial matching (contains). Matching is not case-sensitive. properties: contains: type: string description: If present, user addresses with street_address containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. examples: customer_reference_eq: summary: Filter by exact customer reference description: Find user addresses with exact customer reference match value: customer_reference: eq: MY REF 001 customer_reference_contains: summary: Filter by partial customer reference description: Find user addresses containing part of customer reference value: customer_reference: contains: REF street_address_contains: summary: Filter by street address description: Find user addresses containing part of street address value: street_address: contains: Congress combined_filters: summary: Combined filters description: Use multiple filters together value: customer_reference: contains: REF street_address: contains: Avenue user-addresses_FilterConsolidated_26a215df92: name: filter in: query style: deepObject explode: true description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains], filter[street_address][contains]' schema: type: object properties: customer_reference: type: object description: Filter user addresses via the customer reference. Supports both exact matching (eq) and partial matching (contains). Matching is not case-sensitive. properties: eq: type: string description: Filter user addresses via exact customer reference match. Matching is not case-sensitive. contains: type: string description: If present, user addresses with customer_reference containing the given value will be returned. Matching is not case-sensitive. street_address: type: object description: Filter user addresses via street address. Supports partial matching (contains). Matching is not case-sensitive. properties: contains: type: string description: If present, user addresses with street_address containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters. examples: customer_reference_eq: summary: Filter by exact customer reference description: Find user addresses with exact customer reference match value: customer_reference: eq: MY REF 001 customer_reference_contains: summary: Filter by partial customer reference description: Find user addresses containing part of customer reference value: customer_reference: contains: REF street_address_contains: summary: Filter by street address description: Find user addresses containing part of street address value: street_address: contains: Congress combined_filters: summary: Combined filters description: Use multiple filters together value: customer_reference: contains: REF street_address: contains: Avenue user-addresses_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load user-addresses_PageConsolidated_26a215df92: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load users_PageNumber: name: page[number] in: query description: The page number to load schema: type: integer minimum: 1 default: 1 users_PageSize: name: page[size] in: query description: The size of the page schema: type: integer minimum: 1 maximum: 250 default: 250 video_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page. number: type: integer minimum: 1 default: 1 description: The page number to load. voice: name: voice in: query required: false description: Voice identifier in the format `provider.model_id.voice_id` or `provider.voice_id` (e.g. `Telnyx.Ultra.`, `Telnyx.Bayan.Ahmed`, `Telnyx.Sukhan.urdu-professor`, or `azure.en-US-AvaMultilingualNeural`). When provided, the `provider`, `model_id`, and `voice_id` are extracted automatically. Takes precedence over individual `provider`/`model_id`/`voice_id` parameters. schema: type: string voice-channels_PageConsolidated: name: page in: query style: deepObject explode: true description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' schema: type: object properties: size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page number: type: integer minimum: 1 default: 1 description: The page number to load voice-designs_PageNumber: name: page[number] in: query required: false description: Page number for pagination (1-based). schema: type: integer minimum: 1 default: 1 voice-designs_PageSize: name: page[size] in: query required: false description: Number of results per page. schema: type: integer minimum: 1 maximum: 250 default: 20 voice-designs_Sort: name: sort in: query required: false description: Sort order. Prefix with `-` for descending. Defaults to `-created_at`. schema: type: string enum: - name - -name - created_at - -created_at default: -created_at voice-sdk-debug_PageConsolidated: name: page in: query description: Consolidated page parameter (deepObject style). required: false style: deepObject explode: true schema: type: object properties: number: type: integer minimum: 1 default: 1 example: 1 size: type: integer minimum: 1 default: 20 example: 20 maximum: 100 description: Number of reports per page. Maximum 100. voice_id: name: voice_id in: query required: false description: Voice identifier for the chosen provider. schema: type: string wireless_PageConsolidated: name: page in: query explode: true description: 'Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]' schema: type: object properties: number: type: integer minimum: 1 default: 1 description: The page number to load. size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page. wireless_PageConsolidated_c5290d5308: name: page in: query explode: true description: 'Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]' schema: type: object properties: number: type: integer minimum: 1 default: 1 description: The page number to load. size: type: integer minimum: 1 maximum: 250 default: 20 description: The size of the page. wireless_PageNumber: name: page[number] in: query description: The page number to load. schema: type: integer minimum: 1 default: 1 wireless_PageNumber_c5290d5308: name: page[number] in: query description: The page number to load. schema: type: integer minimum: 1 default: 1 wireless_PageSize: name: page[size] in: query description: The size of the page. schema: type: integer minimum: 1 maximum: 250 default: 20 wireless_PageSize_c5290d5308: name: page[size] in: query description: The size of the page. schema: type: integer minimum: 1 maximum: 250 default: 20 x402-transactions_PageNumber: name: page[number] in: query required: false description: The page number to load. schema: type: integer minimum: 1 default: 1 x402-transactions_PageSize: name: page[size] in: query required: false description: The size of the page. schema: type: integer minimum: 1 maximum: 250 default: 100 requestBodies: CreateCredentialsRequest: description: Creates new credentials resource for the specified connection_id. required: true content: application/json: schema: $ref: '#/components/schemas/CustomStorageConfiguration' CreateCustomerServiceRecord: required: true content: application/json: schema: type: object required: - phone_number properties: phone_number: type: string description: A valid US phone number in E164 format. example: '+13035553000' pattern: ^\+1\d{10}$ webhook_url: type: string description: Callback URL to receive webhook notifications. example: https://example.com/webhook additional_data: $ref: '#/components/schemas/CustomerServiceRecordAdditionalData' CreatePortingAdditionalDocuments: description: A list of additional document parameters required: true content: application/json: schema: type: object properties: additional_documents: type: array maxItems: 100 items: type: object properties: document_type: type: string description: The type of document being created. enum: - loa - invoice - csr - other document_id: type: string description: The document identification format: uuid example: additional_documents: - document_id: 22771a52-c43a-4539-80db-9dd9ec36e237 document_type: loa - document_id: d91474e6-4ebc-4ec1-b379-c596eeb405d6 document_type: invoice CreatePortingAssociatedPhoneNumber: required: true content: application/json: schema: type: object required: - phone_number_range - action properties: phone_number_range: type: object properties: start_at: type: string description: Specifies the start of the phone number range for this associated phone number. pattern: ^\+\d{7,15}$ example: '+441234567890' end_at: type: string description: Specifies the end of the phone number range for this associated phone number. pattern: ^\+\d{7,15}$ example: '+441234567899' action: type: string description: Specifies the action to take with this phone number during partial porting. enum: - keep - disconnect example: keep CreatePortingLOAConfiguration: required: true content: application/json: schema: type: object description: The parameters for creating a new LOA configuration. required: - name - logo - company_name - address - contact properties: name: type: string description: The name of the LOA configuration example: My LOA Configuration logo: type: object description: The logo of the LOA configuration required: - document_id properties: document_id: type: string description: The document identification format: uuid company_name: type: string description: The name of the company example: Telnyx address: type: object description: The address of the company. required: - street_address - city - state - zip_code - country_code properties: street_address: type: string description: The street address of the company example: 600 Congress Avenue extended_address: type: string description: The extended address of the company example: 14th Floor city: type: string description: The locality of the company example: Austin state: type: string description: The administrative area of the company example: TX pattern: ^[A-Z]{2}$ zip_code: type: string description: The postal code of the company example: '78701' pattern: ^[0-9]{5}(?:-[0-9]{4})?$ country_code: type: string description: The country code of the company example: US pattern: ^[A-Z]{2}$ contact: type: object description: The contact information of the company. required: - email - phone_number properties: email: type: string description: The email address of the contact example: testing@telnyx.com phone_number: type: string description: The phone number of the contact example: '+12003270001' pattern: ^\+\d{11,15}$ CreatePortingPhoneNumberBlock: required: true content: application/json: schema: type: object required: - phone_number_range - activation_ranges properties: phone_number_range: type: object required: - start_at - end_at properties: start_at: type: string description: Specifies the start of the phone number range for this porting phone number block. pattern: ^\+\d{7,15}$ example: '+4930244999901' end_at: type: string description: Specifies the end of the phone number range for this porting phone number block. pattern: ^\+\d{7,15}$ example: '+4930244999910' activation_ranges: description: Specifies the activation ranges for this porting phone number block. The activation range must be within the block range and should not overlap with other activation ranges. type: array items: type: object required: - start_at - end_at properties: start_at: type: string description: Specifies the start of the activation range. Must be greater or equal the start of the extension range. pattern: ^\+\d{7,15}$ example: '+4930244999901' end_at: type: string description: Specifies the end of the activation range. It must be no more than the end of the extension range. pattern: ^\+\d{7,15}$ example: '+4930244999910' CreatePortingPhoneNumberConfigurations: description: A list of phone number configuration parameters required: true content: application/json: schema: type: object properties: phone_number_configurations: type: array maxItems: 20 items: type: object required: - porting_phone_number_id - user_bundle_id properties: porting_phone_number_id: type: string format: uuid description: Identifies the porting phone number to be configured. example: 927f4687-318c-44bc-9f2f-22a5898143a4 user_bundle_id: type: string format: uuid description: Identifies the user bundle to be associated with the porting phone number. example: ff901545-3e27-462a-ba9d-2b34654cab82 CreatePortingPhoneNumberExtension: required: true content: application/json: schema: type: object required: - porting_phone_number_id - extension_range - activation_ranges properties: porting_phone_number_id: type: string description: Identifies the porting phone number associated with this porting phone number extension. format: uuid example: f24151b6-3389-41d3-8747-7dd8c681e5e2 extension_range: type: object required: - start_at - end_at properties: start_at: type: integer description: Specifies the start of the extension range for this porting phone number extension. example: 1 end_at: type: integer description: Specifies the end of the extension range for this porting phone number extension. example: 10 activation_ranges: description: Specifies the activation ranges for this porting phone number extension. The activation range must be within the extension range and should not overlap with other activation ranges. type: array items: type: object required: - start_at - end_at properties: start_at: description: Specifies the start of the activation range. Must be greater or equal the start of the extension range. type: integer example: 1 end_at: description: Specifies the end of the activation range. It must be no more than the end of the extension range. type: integer example: 10 CreatePortingReport: required: true content: application/json: schema: type: object description: The parameters for generating a new porting related report. required: - report_type - params properties: report_type: type: string description: Identifies the type of report enum: - export_porting_orders_csv example: export_porting_orders_csv params: oneOf: - $ref: '#/components/schemas/ExportPortingOrdersCSVReport' CreatePortoutReport: required: true content: application/json: schema: type: object description: The parameters for generating a new port-out related report. required: - report_type - params properties: report_type: type: string description: Identifies the type of report enum: - export_portouts_csv example: export_portouts_csv params: oneOf: - $ref: '#/components/schemas/ExportPortoutsCSVReport' DeleteRecordingsRequest: description: Deletes recordings for the given list of IDs. required: true content: application/json: schema: type: object required: - ids properties: ids: type: array description: List of call recording IDs to delete. items: type: string example: ids: - 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 - 428c31b6-7af4-4bcb-b7f5-5013ef9657c2 DialogflowConnectionRequest: description: The params expected to create/update a Dialogflow Connection for given connection_id. required: true content: application/json: schema: $ref: '#/components/schemas/DialogflowConnection' InitiatePortingActionRequirement: description: Parameters for initiating the action requirement required: true content: application/json: schema: type: object required: - params properties: params: oneOf: - $ref: '#/components/schemas/AUIdVerificationParams' SendPortingVerificationCodes: description: A list of phone numbers to send the verification codes to and the method to send them by required: false content: application/json: schema: type: object properties: phone_numbers: type: array maxItems: 100 items: type: string verification_method: type: string enum: - sms - call example: phone_numbers: - '+61424000001' - '+61424000002' verification_method: sms SharePortingOrder: required: true content: application/json: schema: type: object properties: expires_in_seconds: description: The number of seconds the token will be valid for type: integer minimum: 1 maximum: 172800 permissions: description: The permissions the token will have type: string enum: - porting_order.document.read - porting_order.document.update example: expires_in_seconds: 3600 permissions: porting_order.document.read SiprecConnectorRequest: description: The parameters required to create or update a SIPREC connector. required: true content: application/json: schema: $ref: '#/components/schemas/SiprecConnector' TexmlCreateCallRecordingRequest: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCreateCallRecordingRequestBody' description: Starts call recording on a call. TexmlCreateCallStreamingRequest: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCreateCallStreamingRequestBody' description: Start streaming media from a call TexmlCreateSiprecSessionRequest: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCreateSiprecSessionRequestBody' description: Starts a SIPREC session. TexmlUpdateCallRecordingRequest: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlUpdateCallRecordingRequestBody' description: Update call recording on a call. TexmlUpdateCallStreamingRequest: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlUpdateCallStreamingRequestBody' description: Update streaming TexmlUpdateSiprecSessionRequest: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlUpdateSiprecSessionRequestBody' description: Updates a SIPREC session. UpdatePortingOrdersActivationJob: required: true content: application/json: schema: type: object properties: activate_at: type: string format: date-time example: '2019-01-01T00:00:00Z' description: The desired activation time. The activation time should be between any of the activation windows. VerifyCustomerServiceRecordPhoneNumberCoverage: required: true content: application/json: schema: type: object required: - phone_numbers properties: phone_numbers: type: array description: The phone numbers list to be verified. items: type: string description: A valid US phone number in E164 format. example: '+13035553000' pattern: ^\+1\d{10}$ VerifyPortingVerificationCodes: description: A list of phone numbers and their verification codes required: true content: application/json: schema: type: object properties: verification_codes: type: array maxItems: 100 items: type: object properties: phone_number: type: string code: type: string example: verification_codes: - phone_number: '+61424000001' code: '12345' - phone_number: '+61424000002' code: '54321' responses: 10dlc_GenericErrorResponse: description: Generic response error content: application/json: schema: $ref: '#/components/schemas/10dlc_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. 10dlc_GenericErrorResponse_ca4eb0ad6f: description: Generic response error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: string title: string detail: string source: pointer: string parameter: string AdvancedOrderResponse: description: An Advanced Order Response content: application/json: schema: $ref: '#/components/schemas/AdvancedOrder' AuditLogsGenericErrorResponse: description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/AuditLogsErrors' AvatarMutationBadRequestResponse: description: The avatar identifier is malformed, or the operation targets a Telnyx stock avatar, which is read-only. content: application/json: schema: $ref: '#/components/schemas/AvatarErrorResponse' example: errors: - code: '10015' title: Bad Request detail: Telnyx stock avatars cannot be modified. meta: url: https://developers.telnyx.com/docs/overview/errors/10015 AvatarNotFoundResponse: description: The avatar does not exist or is not available to the authenticated organization. content: application/json: schema: $ref: '#/components/schemas/AvatarErrorResponse' example: errors: - code: '10005' title: Resource not found detail: Avatar avatar_0123456789abcdef0123456789abcdef does not exist. meta: url: https://developers.telnyx.com/docs/overview/errors/10005 AvatarRequestValidationErrorResponse: description: The request body, path parameter, or query parameter failed validation. content: application/json: schema: $ref: '#/components/schemas/AvatarErrorResponse' example: errors: - code: '10015' title: Bad Request detail: The request contains invalid avatar parameters. meta: url: https://developers.telnyx.com/docs/overview/errors/10015 AvatarServiceUnavailableResponse: description: Avatar storage is temporarily unavailable. Retry the operation. content: application/json: schema: $ref: '#/components/schemas/AvatarErrorResponse' example: errors: - code: '10037' title: Service unavailable detail: Avatar storage is temporarily unavailable. Try again. meta: url: https://developers.telnyx.com/docs/overview/errors/10037 AvatarValidationErrorResponse: description: The request, uploaded image, or organization quota failed validation. Uploaded images must not exceed 10 MiB. content: application/json: schema: $ref: '#/components/schemas/AvatarErrorResponse' example: errors: - code: '10027' title: Unprocessable Entity detail: The image must be between 256 and 8192 pixels on each side. meta: url: https://developers.telnyx.com/docs/overview/errors/10027 BadRequest: description: 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 — no leak). content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '10001' title: Not Found detail: The requested email block was not found BulkSIMCardActionCollectionResponse: content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/BulkSIMCardActionDetailed' meta: $ref: '#/components/schemas/PaginationMeta' description: Successful Response ChangesetError: description: Validation error (changeset or internal `Params`). One error object per field, `source.pointer /data/attributes/`. content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '10015' title: Validation Failed detail: can't be blank source: pointer: /data/attributes/to Conflict: description: The request conflicts with existing state (e.g. duplicate slug or duplicate source). content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: collection_slug_taken title: Collection slug already in use detail: A collection with slug 'support-transcripts' already exists for this account. meta: pointer: /slug ConflictErrorResponse: description: Resource conflict or in use content: application/json: schema: $ref: '#/components/schemas/Errors' DependencyUnavailable: description: A registration dependency is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/rcs-registration_ErrorResponse' DraftUnavailableResponse: description: Drafts or the email domain service are temporarily unavailable (10016). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: Drafts are temporarily unavailable. Please try again later. EmailSendTooManyRequestsResponse: description: Send rejected before message creation because the account daily recipient quota was exhausted (10011), the sender-domain graduation ceiling was exceeded (domain_graduation_limit_exceeded), or domain reputation is poor (reputation_suspended). headers: Retry-After: description: Seconds until the next UTC-midnight reset. Present only for domain_graduation_limit_exceeded; omitted for 10011 and reputation_suspended. schema: type: integer minimum: 1 example: 3600 content: application/json: schema: oneOf: - $ref: '#/components/schemas/DailySendLimitError' - $ref: '#/components/schemas/DomainGraduationLimitExceededError' - $ref: '#/components/schemas/ReputationSuspendedError' examples: accountDailyLimit: summary: Account daily recipient quota exhausted value: errors: - code: '10011' title: Too Many Requests detail: Daily send limit of 1000 recipients exceeded. The limit resets at midnight UTC. senderDomainGraduation: summary: Sender-domain graduation ceiling exceeded value: errors: - code: domain_graduation_limit_exceeded title: Too Many Requests detail: Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight UTC. meta: retry_after_seconds: 3600 remaining_today: 0 reputationSuspended: summary: Domain reputation is poor value: errors: - code: reputation_suspended title: Sending Suspended detail: Sender domain reputation is too low. Sending has been suspended. Please contact support to resolve deliverability issues. Forbidden: description: The authenticated credential is not permitted to perform this operation. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: forbidden message: credential is not permitted ForbiddenErrorResponse: description: Insufficient permissions to access billing group content: application/json: schema: $ref: '#/components/schemas/Errors' ForbiddenResponse: description: Forbidden. The request is understood but has been refused. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '403' title: Forbidden detail: Forbidden FrameworkError: description: 'Framework-rendered error (e.g. 406 Not Acceptable, 405 Method Not Allowed, 415 Unsupported Media Type). HTTP status matches the error and the body `code` carries that same status (e.g. `"406"`, not a hardcoded `"500"`). The explicit `500.json` clause still emits `code: "500"` for genuine 500s. ' content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '406' title: Not Acceptable detail: Not Acceptable GatewayError400: description: Invalid fields or values (invalid_request), or token-key budget/rate limits outside their supported range (limit_out_of_range). headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: invalid_request title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError401: description: Wrong/missing credential for this plane. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. WWW-Authenticate: schema: type: string description: Bearer challenge for this plane; no provider/master credential disclosure. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: unauthorized title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError403: description: Blocked/expired, exhausted budget or disallowed model; scope identifies exhausted level. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: unauthorized title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError404: description: Absent or foreign-account resource (indistinguishable). headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: not_found title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError409: description: Membership, idempotency or snapshot conflict. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds; retrying inference is not idempotent. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: idempotency_conflict title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError40911: description: Expired or invalidated export cursor (cursor_expired). Restart from start_time within the retained window and deduplicate records by id. Waiting and retrying the same cursor cannot recover; this response has no Retry-After header. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway_Error' example: errors: - code: cursor_expired title: Request could not be completed detail: Restart from start_time within the retained window and deduplicate records by id. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError412: description: ETag mismatch. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: precondition_failed title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError428: description: If-Match required. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: precondition_required title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError429: description: Rate limited. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds; retrying inference is not idempotent. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: rate_limit_exceeded title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError502: description: 'upstream_error: every admitted provider attempt, including configured group retries and fallbacks, failed before the first provider event; streams return this real status instead of 200 plus an SSE error. Retrying is not idempotent.' headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds; retrying inference is not idempotent. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: invalid_request title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError503: description: Enforcement/secret/managed route unavailable; fail closed. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds; retrying inference is not idempotent. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: enforcement_unavailable title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GatewayError504: description: 'upstream_timeout: as 502 upstream_error, but the last admitted attempt timed out waiting for the provider (connect, read or write timeout, the attempt deadline, or x-ltg-request-timeout) before its first event. Retrying is not idempotent.' headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds; retrying inference is not idempotent. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-resources_Error' example: errors: - code: invalid_request title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' GetGcbChannelZonesRequestResponse: description: A list of channel zones content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/GcbChannelZone' meta: $ref: '#/components/schemas/PaginationMeta' IdempotencyConflictResponse: description: A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key and request. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10036' detail: A request with this Idempotency-Key is already being processed. source: pointer: /header/Idempotency-Key title: Resource is being processed IdempotencyPayloadTooLargeResponse: description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service (code 10007). Requests sent without the header are not subject to this limit. content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: '10007' title: Payload Too Large detail: The request body exceeds the Edge replay-protection limit for idempotent requests. IdempotencyProtectionUnavailableResponse: description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. Retry with the same key. content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: '10016' title: Service Unavailable detail: Edge idempotency protection is temporarily unavailable. Please try again later. InboundMessageLabelResponse: description: The updated message, including its current label set. content: application/json: schema: $ref: '#/components/schemas/InboundMessageResponse' example: data: id: 55555555-5555-5555-5555-555555555555 record_type: email_message direction: inbound status: received inbox_id: 11111111-1111-1111-1111-111111111111 thread_id: 33333333-3333-3333-3333-333333333333 message_id: in_reply_to: references: - from: email: alice@example.com name: Alice to: - email: agent@inbox.example.test cc: [] bcc: [] reply_to: [] subject: Project update text_body_url: null html_body_url: null reply_text: Thanks, I will send it today. has_quoted_text: true headers: {} inline_files: [] attachments: [] labels: - spam - urgent read_at: null received_at: '2026-07-15T12:30:00Z' sent_at: null created_at: '2026-07-15T12:30:00Z' updated_at: '2026-07-15T12:30:00Z' InboundThreadLabelResponse: description: The thread identity and its current label set. content: application/json: schema: type: object properties: data: type: object properties: id: type: string format: uuid record_type: type: string enum: - email_thread inbox_id: type: string format: uuid labels: type: array items: type: string maxLength: 255 maxItems: 50 required: - id - record_type - labels required: - data example: data: id: 33333333-3333-3333-3333-333333333333 record_type: email_thread inbox_id: 11111111-1111-1111-1111-111111111111 labels: - needs_review InboxFiltersResponse: description: The inbox's current sender allowlist and blocklist. content: application/json: schema: $ref: '#/components/schemas/InboxFiltersResponse' example: data: record_type: email_inbox_filters allowlist: - trusted@example.com - '@partner.example' blocklist: - '@spam.example' InitiateAICallResponse: description: Successful response upon initiating an AI call. content: application/json: schema: $ref: '#/components/schemas/InitiateAICallResult' InternalServerError: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' example: errors: - code: '500' title: Internal Server Error detail: An unexpected error occurred InternalServerErrorResponse: description: Internal server error. An unexpected error occurred on the server. This is typically returned for unhandled exceptions or system failures. content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' example: errors: - code: '10007' title: Internal server error detail: Internal server error LabelServiceUnavailableResponse: description: Inbound label storage is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: Inbox labels are temporarily unavailable. Please try again later. ListAdvancedOrderResponse: description: An array of Advanced Order Responses content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/AdvancedOrder' ListConnectionsResponse: description: Successful response with a list of connections. content: application/json: schema: type: object title: List Connections Response properties: data: type: array items: $ref: '#/components/schemas/Connection' meta: $ref: '#/components/schemas/connections_PaginationMeta' MeetingArtifactUnavailable: description: Artifact generation or authentication is not configured or temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: not_configured message: artifact generation is not configured MeetingCreateProviderError: description: The meeting provider rejected bot creation. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: provider_error message: meeting provider rejected bot creation MeetingReadAuthUnavailable: description: Authentication is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: auth_unavailable message: authentication service unavailable MeetingSendChatProviderError: description: The meeting provider rejected native chat delivery. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: provider_error message: meeting provider rejected chat message MeetingSpeakUpstreamError: description: Text-to-speech generation or meeting audio delivery failed. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: tts_error message: tts synthesis failed MeetingStopProviderError: description: The meeting provider rejected cancellation or leave. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: provider_error message: meeting provider rejected bot stop MeetingStopSpeakingProviderError: description: The meeting provider rejected stopping audio playback. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: provider_error message: meeting provider rejected stop audio MeetingUpdateProviderError: description: The meeting provider rejected the scheduled-session update. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: provider_error message: meeting provider rejected session update NotFound: description: 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 RateLimitExceededResponse: description: Too many requests. The API request rate limit was exceeded. Wait before retrying; honor `Retry-After` when present. See API rate limiting. This is the request rate limit, not the dials-per-second limit of outbound calls. headers: X-RateLimit-Limit: description: Request limit for the current window. schema: type: integer X-RateLimit-Remaining: description: Requests remaining in the current window. schema: type: integer X-RateLimit-Reset: description: Reset timing signal for the current window. schema: type: integer Retry-After: description: Seconds to wait before another attempt, when supplied. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' example: errors: - code: '10011' title: Too many requests detail: You have exceeded the maximum number of allowed requests. meta: url: https://developers.telnyx.com/docs/overview/errors/10011 RecordingMediaAuthenticationUnavailable: description: The authentication service is unavailable. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: auth_unavailable message: authentication service is unavailable RecordingMediaInvalidState: description: Recording media cannot be deleted while the meeting is in progress. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: invalid_state message: provider recording media cannot be deleted while the meeting is in progress RecordingMediaProviderError: description: The deletion request failed and the recording-media deletion outcome is unknown. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: provider_error message: recording-media deletion outcome is unknown RecordingMediaResourceNotFound: description: The meeting session does not exist or belongs to another account. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: not_found message: meeting session not found RecordingMediaUnsupportedCapability: description: Recording-media deletion is not supported for this session. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: unsupported_capability message: provider recording-media deletion is not supported RecordingStartUnavailableResponse: description: Service unavailable. The recording could not be started because the recording service is temporarily unavailable. The recording was not started; retry the request. content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' example: errors: - code: '90072' title: Call recording could not be started detail: The recording service is temporarily unavailable. The recording was not started; please retry the request. ResourceNotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/documents_Error' ResourceNotFoundErrorResponse: description: Resource not found content: application/json: schema: properties: errors: type: array items: $ref: '#/components/schemas/customer_service_record_ResourceNotFoundError' ServiceUnavailable: description: A required feature or dependency is not configured, authentication is unavailable, or (`assistant_lookup_unavailable`) the assistant could not be read to check its avatar. content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: not_configured message: required feature is not configured ServiceUnavailableErrorResponse: description: Service temporarily unavailable content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10037' title: Service unavailable detail: Service is unavailable. ServiceUnavailableResponse: description: Service unavailable. The service is temporarily unavailable. This may occur during maintenance or when the service is overloaded. content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' example: errors: - code: '10007' title: Service unavailable detail: Service unavailable TemplateRenderFailedResponse: description: Standalone template render failure (10015). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Template Render Failed detail: Liquid parse error TooManyRequests: description: Authentication is temporarily overloaded. Retry after the number of seconds in `Retry-After`. headers: Retry-After: required: true description: Seconds to wait before retrying. schema: type: integer minimum: 1 maximum: 5 content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: auth_overloaded message: authentication temporarily overloaded TooManyRequestsResponse: description: Too many requests. The number of dial attempts per second allowed for your account has been exceeded. Reduce the rate of outbound dial attempts and retry. content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' example: errors: - code: '90103' title: Dials per second limit exceeded. detail: You have exceeded the number of dials per second allowed for your account. UnauthenticatedResponse: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' examples: Authentication Failed: value: errors: - code: '10009' title: Authentication failed detail: Could not understand the provided credentials. meta: url: https://developers.telnyx.com/docs/overview/errors/10009 Unauthorized: description: 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. The request could not be processed: supplied parameters were invalid, the address failed validation for emergency use at creation (when `validate_address` is `true`, the default), or the address is in use by an active phone number order (delete). Check the `errors` array for details; when the validation service can suggest corrections for an invalid address, each offending field''s error entry carries the suggested value.' content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10015' title: Bad Request detail: The street address provided is invalid. source: pointer: /street_address meta: url: https://developers.telnyx.com/docs/overview/errors/10015 UnprocessableEntityErrorResponse: description: Invalid request data content: application/json: schema: $ref: '#/components/schemas/Errors' UnprocessableEntityResponse: description: Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values, call state errors, conference errors, queue errors, recording/transcription errors, and business logic violations. content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' examples: missing_required_parameter: summary: Missing required parameter value: errors: - code: '10004' title: Missing required parameter detail: The 'to' parameter is required and cannot be blank. source: pointer: /to invalid_call_control_id: summary: Invalid call control ID value: errors: - code: '90015' title: Invalid Call Control ID detail: The call_control_id provided was not valid. source: pointer: /call_control_id call_already_ended: summary: Call has already ended value: errors: - code: '90018' title: Call has already ended detail: This call is no longer active and can't receive commands. call_not_answered: summary: Call not answered yet value: errors: - code: '90034' title: Call not answered yet detail: This call can't receive this command because it has not been answered yet. cannot_record_before_audio_started: summary: Cannot record before audio started value: errors: - code: '90020' title: Call recording triggered before audio started detail: Call recording cannot be started until audio has commenced on the call. transcription_already_active: summary: Transcription already active value: errors: - code: '90054' title: Call transcription is already in progress detail: Call transcription can not be started more than once. ai_assistant_already_active: summary: AI Assistant already active value: errors: - code: '90061' title: AI Assistant is already in progress detail: AI Assistant cannot be started more than once. conference_already_ended: summary: Conference has already ended value: errors: - code: '90019' title: Conference has already ended detail: This conference is no longer active and can't receive commands. conference_name_conflict: summary: Conference name conflict value: errors: - code: '90033' title: Unable to execute command detail: Conference with given name already exists and it's active. max_participants_reached: summary: Maximum participants reached value: errors: - code: '90032' title: Maximum number of participants reached detail: The maximum allowed value of `max_participants` has been reached at 100. queue_full: summary: Queue is full value: errors: - code: '90036' title: Queue full detail: The 'support' queue is full and can't accept more calls. call_already_in_queue: summary: Call already in queue value: errors: - code: '90038' title: Call already in queue detail: Call can't be added to a queue it's already in. invalid_connection_id: summary: Invalid connection ID value: errors: - code: '10015' title: Invalid value for connection_id (Call Control App ID) detail: The requested connection_id (Call Control App ID) is either invalid or does not exist. Only Call Control Apps with valid webhook URL are accepted. source: pointer: /connection_id invalid_phone_number_format: summary: Invalid phone number format value: errors: - code: '10016' title: Phone number must be in +E164 format detail: The 'to' parameter must be in E164 format. source: pointer: /to srtp_not_supported_for_pstn: summary: SRTP not supported for PSTN calls value: errors: - source: pointer: /media_encryption title: Media encryption not supported for PSTN calls detail: SRTP media encryption is not supported for PSTN calls. code: '10011' fork_not_found: summary: Call is not forked value: errors: - code: '90031' title: Call is not currently forked detail: Can't stop forking, because the call isn't currently forked. media_streaming_used: summary: Media streaming in use value: errors: - code: '90045' title: Media Streaming is used detail: This command can't be issued when media streaming is used. invalid_enumerated_value: summary: Invalid enumerated value value: errors: - code: '10032' title: Invalid enumerated value detail: 'The value must be one of: dual, single.' source: pointer: /record_channels value_outside_range: summary: Value outside of range value: errors: - code: '10033' title: Value outside of range detail: The value is outside of allowed range 1 to 5000 source: pointer: /max_participants UnprocessableManagedAccountEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/UnprocessableEntityError' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. UsageExportUnavailable: description: The usage export is unavailable or its bounded read timed out. No partial or truncated page is returned. Preserve the current cursor and retry the same read after Retry-After; on the first page, preserve start_time and types. Do not advance the checkpoint on this error. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds to wait before retrying the same export read with its existing cursor or first-page parameters. content: application/json: schema: $ref: '#/components/schemas/ai-gateway_Error' example: errors: - code: enforcement_unavailable title: Request could not be completed detail: The usage export page could not be completed. meta: request_id: 11111111-1111-4111-8111-111111111111 UsageSummaryUnavailable: description: The usage report is unavailable, its query timed out, or it exceeds the 1,000-model-row limit. No partial or truncated report is returned. Honor Retry-After for a temporary failure. If the report exceeds its limits, narrow the UTC date range or add metadata filters before retrying. Treat unavailable totals as unknown, not zero. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds to wait before retrying an unavailable report. Narrow the date range or add metadata filters if the report exceeds its limits. content: application/json: schema: $ref: '#/components/schemas/ai-gateway_Error' example: errors: - code: enforcement_unavailable title: Request could not be completed detail: The usage report could not be completed. meta: request_id: 11111111-1111-4111-8111-111111111111 ValidationError: description: The request body or parameters failed validation. content: application/json: schema: $ref: '#/components/schemas/ValidationErrorResponse' ValidationErrorQuery: description: Query-param validation error (`source.pointer /`). content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '10015' title: Validation Failed detail: is invalid source: pointer: /filter[reason] ValidationErrorResponse: description: Validation Failed (10015) or changeset validation error. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: subject can't be blank source: pointer: /data/attributes/subject ValidationFailed: description: Validation failed content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' example: errors: - code: '10015' title: Validation Failed detail: domain is invalid source: pointer: /data/attributes/domain WabaSettingsResponse: description: Successful response with Whatsapp business account settings content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WabaSettings' WabaSingleResponse: description: Successful response with Whatsapp business account content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WabaResponse' WabasListResponse: description: Successful response with list of Whatsapp business accounts content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WabaResponse' meta: $ref: '#/components/schemas/messaging_PaginationMeta' WhatsappCallingSettingsResponse: description: Successful response with Whatsapp calling settings content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappCallingSettingsData' WhatsappConversationWindowResponse: description: Successful response with Whatsapp conversation window status content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappConversationWindowData' WhatsappConversationalComponentSingleResponse: description: Successful response with Whatsapp conversational components content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappConversationalComponent' WhatsappHostedSignupListResponse: description: Successful response with a list of WhatsApp hosted signups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WhatsappHostedSignup' meta: $ref: '#/components/schemas/messaging_PaginationMeta' example: data: - id: 0192345a-7b8c-7d9e-0f12-3456789abcde record_type: whatsapp_jwt app_id: '123456789012345' created_at: '2026-07-08T12:00:00Z' expires_at: '2026-07-09T12:00:00Z' jwt: eyJhbGciOiJSUzI1NiIs... url: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs... meta: page_number: 1 page_size: 20 total_pages: 1 total_results: 1 WhatsappHostedSignupResponse: description: Successful response with a WhatsApp hosted signup content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappHostedSignup' example: data: id: 0192345a-7b8c-7d9e-0f12-3456789abcde record_type: whatsapp_jwt app_id: '123456789012345' created_at: '2026-07-08T12:00:00Z' expires_at: '2026-07-09T12:00:00Z' jwt: eyJhbGciOiJSUzI1NiIs... url: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs... WhatsappPhoneSingleResponse: description: Successful response with one WhatsApp phone number content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappPhoneResponse' required: - data WhatsappPhonesListResponse: description: Successful response with Whatsapp phone numbers content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WhatsappPhoneResponse' meta: $ref: '#/components/schemas/messaging_PaginationMeta' WhatsappProfileSingleResponse: description: Successful response with Whatsapp profile content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappProfileData' WhatsappSignupSessionListResponse: description: Successful response with a list of WhatsApp signup sessions content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WhatsappSignupSession' meta: $ref: '#/components/schemas/messaging_PaginationMeta' example: data: - record_type: whatsapp_session_id session_id: 019f4253-e09a-7622-bc6f-625378711d78 user_id: 00000000-0000-4000-8000-000000000000 state: SHARE_CREDIT_LINE status: FAILURE created_at: '2026-10-01T09:58:25Z' updated_at: '2026-10-01T09:58:27Z' waba_id: '123456789012345' customer_id: acme-corp-42 errors: - '[ShareCreditLine] Bad status received: Invalid parameter Credit Allocation Not Allowed During Month-End Close: This WhatsApp Business Account cannot be moved onto a credit line while the monthly billing close is running. Please try again once the close has completed, usually within the first few days of the month.' meta: page_number: 1 page_size: 20 total_pages: 1 total_results: 1 WhatsappSignupSessionResponse: description: Successful response with a WhatsApp signup session content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappSignupSession' example: data: record_type: whatsapp_session_id session_id: 019f4253-e09a-7622-bc6f-625378711d78 user_id: 00000000-0000-4000-8000-000000000000 state: SHARE_CREDIT_LINE status: FAILURE created_at: '2026-10-01T09:58:25Z' updated_at: '2026-10-01T09:58:27Z' waba_id: '123456789012345' customer_id: acme-corp-42 errors: - '[ShareCreditLine] Bad status received: Invalid parameter Credit Allocation Not Allowed During Month-End Close: This WhatsApp Business Account cannot be moved onto a credit line while the monthly billing close is running. Please try again once the close has completed, usually within the first few days of the month.' WhatsappTemplateListResponse: description: Successful response with Whatsapp template content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WhatsappTemplateData' meta: $ref: '#/components/schemas/messaging_PaginationMeta' WhatsappTemplateSingleResponse: description: Successful response with Whatsapp template content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappTemplateData' WhatsappUserDataResponse: description: Successful response with Whatsapp user data content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/WhatsappUserData' ai-gateway-spend_GatewayError400: description: 'Invalid fields, unsupported protocol options, bad page/date range (invalid_request); a well-formed token key limit of 0 or above its maximum (limit_out_of_range). prompt_blocked / response_blocked: the group guardrail policy blocked the prompt or the generated response. invalid_metadata: an authenticated inference request''s x-ltg-metadata header is not a valid RequestMetadata object; the response never echoes the header.' headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-spend_Error' example: errors: - code: invalid_request title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 ai-gateway-spend_GatewayError409: description: The snapshot is missing, invalid, expired or does not match the account, range, filters or page size. Correct the parameters to match a valid snapshot, or restart at page[number]=1 without page[snapshot] to obtain a new snapshot. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Advisory delay in seconds. Waiting does not repair a missing, invalid, expired or mismatched snapshot. Correct the parameters to match a valid snapshot, or restart at page[number]=1 without page[snapshot]; do not replay an unchanged invalid snapshot request. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-spend_Error' example: errors: - code: conflict title: Snapshot conflict detail: Correct the parameters to match a valid snapshot, or restart at page[number]=1 without page[snapshot]. meta: request_id: 11111111-1111-4111-8111-111111111111 ai-gateway-spend_GatewayError503: description: The report is unavailable or exceeds its bounded snapshot capacity. The report snapshot supports at most 10,000 matching requests, independently of page size. Exceeding this bound returns HTTP 503 without partial results. Narrow the date range or resource filters before retrying. A failed report must not be interpreted as zero usage. headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. Retry-After: schema: type: integer minimum: 1 description: Seconds to wait before retrying an unavailable report. Narrow filters when the report exceeds its limits. content: application/json: schema: $ref: '#/components/schemas/ai-gateway-spend_Error' example: errors: - code: enforcement_unavailable title: Request could not be completed detail: The report is unavailable or exceeds 10,000 matching requests. Narrow the date range or resource filters if the capacity limit is exceeded. meta: request_id: 11111111-1111-4111-8111-111111111111 ai-gateway_GatewayError400: description: 'Invalid fields, unsupported protocol options, bad page/date range (invalid_request); a well-formed token key limit of 0 or above its maximum (limit_out_of_range). prompt_blocked / response_blocked: the group guardrail policy blocked the prompt or the generated response. invalid_metadata: an authenticated inference request''s x-ltg-metadata header is not a valid RequestMetadata object; the response never echoes the header.' headers: X-Request-ID: schema: type: string format: uuid description: Server-generated correlation ID. Cache-Control: schema: const: no-store description: All API responses; application cache is server-side only. content: application/json: schema: $ref: '#/components/schemas/ai-gateway_Error' example: errors: - code: invalid_request title: Request could not be completed detail: Check the request and the documented handling for this error. meta: request_id: 11111111-1111-4111-8111-111111111111 billing_ForbiddenErrorResponse: description: Insufficient permissions to access balance information content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. billing_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. billing_UnprocessableEntityErrorResponse: description: Invalid or missing account information content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. branded-calling_GenericErrorResponse: description: An error occurred. The response carries the standard Telnyx error envelope. content: application/json: schema: $ref: '#/components/schemas/branded-calling_Errors' examples: validation_error: summary: 422 - request body failed validation value: errors: - code: '10005' title: Invalid parameters detail: field required meta: url: https://developers.telnyx.com/docs/overview/errors/10005 source: pointer: /body/legal_name bad_request: summary: 400 - request rejected by a state guard description: Returned when the request itself is well-formed but the resource is in a state that disallows this action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting). value: errors: - code: '10015' title: Bad Request detail: Cannot update DIR in 'verified' status meta: url: https://developers.telnyx.com/docs/overview/errors/10015 not_found: summary: 404 - resource does not exist or is not yours value: errors: - code: '10009' title: Resource not found detail: Enterprise not found. meta: url: https://developers.telnyx.com/docs/overview/errors/10009 conflict: summary: 409 - request conflicts with current resource state value: errors: - code: '10021' title: Resource in use detail: DIR has 1 active infringement claim(s). Resolve the claim before making this change. meta: url: https://developers.telnyx.com/docs/overview/errors/10021 bundle-pricing_BadRequestErrorResponse: description: Invalid request parameters content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string title: type: string detail: type: string example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. bundle-pricing_GenericErrorResponse: description: Unexpected error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string title: type: string detail: type: string example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. bundle-pricing_NotFoundErrorResponse: description: Resource not found content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string title: type: string detail: type: string example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. bundle-pricing_UnprocessableEntityErrorResponse: description: Request cannot be processed content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string title: type: string detail: type: string example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. call-control_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. call-recordings_GenericErrorResponse: description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. call-recordings_InternalServerErrorResponse: description: Internal server error. An unexpected error occurred on the server. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '500' title: Internal Server Error detail: Internal server error call-recordings_NotFoundResponse: description: Resource not found. The requested resource or URL could not be found. content: application/json: schema: $ref: '#/components/schemas/Errors' examples: not_found: summary: Generic not found value: errors: - code: '404' title: Not Found detail: Page not found connection_not_found: summary: Connection not found value: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. source: pointer: /connection_id call-recordings_UnauthorizedResponse: description: Unauthorized. The request lacks valid authentication credentials. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '401' title: Unauthorized detail: Unauthorized call-scripting_BadRequestResponse: description: Bad request. The request could not be understood or was missing required parameters. content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' examples: conference_ended: summary: Conference already ended value: errors: - code: '90019' title: Conference has already ended detail: This conference is no longer active and can't receive commands. participant_on_hold: summary: Participant on hold value: errors: - code: '90047' title: Participant on hold detail: This participant is on hold call-scripting_GenericErrorResponse: description: An unexpected error occurred while processing the request. content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occurred. call-scripting_NotFoundResponse: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/call-scripting_ResourceNotFoundError' call-scripting_NotFoundResponse_c75353cb83: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/call-scripting_ResourceNotFoundError_c75353cb83' call-scripting_TooManyRequestsResponse: description: Too many requests. The number of dial attempts per second allowed for your account has been exceeded. Reduce the rate of outbound dial attempts and retry. content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' example: errors: - code: '90103' title: Dials per second limit exceeded. detail: You have exceeded the number of dials per second allowed for your account. call-scripting_UnauthorizedResponse: description: The user doesn't have the required permissions to perform the requested action. content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' examples: notAuthorized: value: errors: - code: '10010' title: Not authorized detail: You are not authorized to access the requested resource. meta: url: https://developers.telnyx.com/docs/overview/errors/10010 source: pointer: / call-scripting_UnprocessableEntityResponse: description: Unprocessable entity. The request was well-formed but contains semantic errors. content: application/json: schema: $ref: '#/components/schemas/calls_ErrorResponse' examples: missing_required_parameter: summary: Missing required parameter value: errors: - code: '10004' title: Missing required parameter detail: 'Can''t be blank: ApplicationId' source: pointer: /ApplicationId invalid_parameter_type: summary: Invalid parameter type value: errors: - code: '10026' title: Invalid parameter type detail: The 'To' parameter must be of type 'string' source: pointer: /To invalid_enumerated_value: summary: Invalid enumerated value value: errors: - code: '10032' title: Invalid enumerated value detail: Status must be one of completed source: pointer: /Status invalid_send_digits: summary: Invalid SendDigits format value: errors: - code: '90014' title: Invalid value for SendDigits detail: 'The ''SendDigits'' parameter must be a ''string'' made of a combination of either 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, w, W, * or #' source: pointer: /SendDigits call-scripting_UnprocessableEntityResponse_c75353cb83: description: Unprocessable entity. The request was well-formed but contains semantic errors. content: application/json: schema: $ref: '#/components/schemas/call-scripting_ErrorResponse' examples: missing_required_parameter: summary: Missing required parameter value: errors: - code: '10004' title: Missing required parameter detail: 'Can''t be blank: ApplicationId' source: pointer: /ApplicationId invalid_parameter_type: summary: Invalid parameter type value: errors: - code: '10026' title: Invalid parameter type detail: The 'To' parameter must be of type 'string' source: pointer: /To invalid_enumerated_value: summary: Invalid enumerated value value: errors: - code: '10032' title: Invalid enumerated value detail: Status must be one of completed source: pointer: /Status invalid_send_digits: summary: Invalid SendDigits format value: errors: - code: '90014' title: Invalid value for SendDigits detail: 'The ''SendDigits'' parameter must be a ''string'' made of a combination of either 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, w, W, * or #' source: pointer: /SendDigits charges_BadRequestErrorResponse: description: Invalid request parameters or date range content: application/json: schema: $ref: '#/components/schemas/charges_Errors' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. charges_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/charges_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. charges_UnprocessableEntityErrorResponse: description: User account not found content: application/json: schema: $ref: '#/components/schemas/charges_Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. connections_BadRequestResponse: description: Bad request, the request was unacceptable, often due to missing a required parameter. content: application/json: schema: $ref: '#/components/schemas/connections_ErrorResponse' examples: missingParameter: value: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10015 connections_NotFoundResponse: description: The requested resource doesn't exist. content: application/json: schema: $ref: '#/components/schemas/connections_ErrorResponse' examples: notFound: value: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. meta: url: https://developers.telnyx.com/docs/overview/errors/10005 source: pointer: / connections_UnauthorizedResponse: description: The user doesn't have the required permissions to perform the requested action. content: application/json: schema: $ref: '#/components/schemas/connections_ErrorResponse' examples: notAuthorized: value: errors: - code: '10010' title: Not authorized detail: You are not authorized to access the requested resource. meta: url: https://developers.telnyx.com/docs/overview/errors/10010 source: pointer: / connections_UnprocessableEntityResponse: description: The request was well-formed but was unable to be followed due to semantic errors. content: application/json: schema: $ref: '#/components/schemas/connections_ErrorResponse' examples: unprocessableEntity: value: errors: - code: '10015' title: Bad Request detail: 'Invalid dnis_format: test, was provided. Acceptable formats are +e164, e164, national, sip_username' meta: url: https://developers.telnyx.com/docs/overview/errors/10015 source: pointer: /inbound/dnis_number_format customer_service_record_ForbiddenErrorResponse: description: You do not have permission to perform the requested action on the specified resource or resources. content: application/json: schema: properties: errors: type: array items: $ref: '#/components/schemas/ForbiddenError' customer_service_record_UnauthorizedErrorResponse: description: The required authentication headers were either invalid or not included in the request. content: application/json: schema: properties: errors: type: array items: $ref: '#/components/schemas/UnauthorizedError' customer_service_record_UnprocessableEntityErrorResponse: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: properties: errors: type: array items: $ref: '#/components/schemas/customer_service_record_UnprocessableEntityError' documents_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. documents_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. email_BadRequestResponse: description: Bad Request / Validation Failed (10015). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10015' title: Bad Request detail: email is required email_ForbiddenResponse: description: Forbidden (10007), such as domain not verified, suspended, degraded, or missing DKIM. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10007' title: Forbidden detail: Domain is not verified. Complete DNS setup before sending email. email_InternalServerErrorResponse: description: Internal server error (10019). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10019' title: Internal Server Error detail: Failed to create batch validation email_NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/DomainsErrorResponse' example: errors: - code: '10001' title: Not Found detail: The requested email domain was not found email_NotFoundResponse: description: Resource not found (10001). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10001' title: Not Found detail: The requested resource was not found email_ServiceUnavailableResponse: description: Service unavailable (10016), including an unavailable upstream dependency or unavailable Edge idempotency protection for a keyed request. content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10016' title: Service Unavailable detail: The email domain service is temporarily unavailable. Please try again later. email_Unauthorized: description: Missing or invalid gateway auth. content: application/json: schema: $ref: '#/components/schemas/ErrorList' example: errors: - code: '10007' title: Unauthorized detail: Missing authentication email_UnauthorizedResponse: description: Not authorized (10006). content: application/json: schema: $ref: '#/components/schemas/email_ErrorResponse' example: errors: - code: '10006' title: Not authorized detail: Invalid API key meta: url: https://developers.telnyx.com/docs/overview/errors/10006 emergency_BadRequestResponse: description: Bad request, the request was unacceptable, often due to missing a required parameter. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. emergency_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. emergency_NotFoundResponse: description: The requested resource doesn't exist. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. emergency_UnauthorizedResponse: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. emergency_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. invoice_BadRequestErrorResponse: description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. invoice_ForbiddenErrorResponse: description: Insufficient permissions to access invoices content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10010' title: Authorization failed detail: You do not have permission to perform the requested action on the specified resource or resources. invoice_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. invoice_NotFoundErrorResponse: description: Invoice not found content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. managed-accounts_ForbiddenResponse: description: Unauthorized response. Happens when the current user is not authorized to access the endpoint. managed-accounts_UnauthorizedResponse: description: Unauthenticated response. Happens when the current user cannot be authenticated. management_messaging_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: string title: string detail: string source: pointer: /data/attributes/phone_number parameter: string media-storage_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: string title: string detail: string source: pointer: string parameter: string media-streaming_GenericErrorResponse: description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. media-streaming_NotFoundResponse: description: Resource not found. The requested resource or URL could not be found. content: application/json: schema: $ref: '#/components/schemas/Errors' examples: not_found: summary: Generic not found value: errors: - code: '404' title: Not Found detail: Page not found connection_not_found: summary: Connection not found value: errors: - code: '10005' title: Resource not found detail: The Dialogflow connection for the specified connection_id could not be found. source: pointer: /connection_id media-streaming_UnprocessableEntityResponse: description: Unprocessable entity. The request was well-formed but contains semantic errors. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '422' title: Unprocessable Entity detail: The request parameters failed validation. source: pointer: /service_account meeting-sessions_BadRequest: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: invalid_request message: request is invalid meeting-sessions_Conflict: description: Conflict content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: invalid_state message: only scheduled sessions can be updated meeting-sessions_InternalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: internal_error message: internal server error meeting-sessions_NotFound: description: Not Found content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: not_found message: meeting session not found meeting-sessions_Unauthorized: description: 'Unauthorized. On api.telnyx.com, authentication is enforced by the API gateway before the request reaches the Meeting service, so a missing or invalid API key returns the standard Telnyx error envelope (`{"errors": [{"code": "10009", ...}]}`) rather than the single-`error` shape below.' content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: unauthorized message: invalid or missing credentials meeting-sessions_UnprocessableEntity: description: Unprocessable Entity, including an unsupported capability content: application/json: schema: $ref: '#/components/schemas/meeting-sessions_ErrorResponse' example: error: code: unsupported_capability message: avatar video is not supported on platform 'unknown' messaging_BadRequestResponse: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. messaging_BadRequestResponse_0b38e7044b: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. messaging_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' messaging_GenericErrorResponse_0b38e7044b: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: string title: string detail: string source: pointer: /data/attributes/phone_number parameter: string messaging_IdempotencyConflictResponse: description: A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key and request. content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: '10036' title: Resource is being processed detail: A request with this Idempotency-Key is already being processed. source: pointer: /header/Idempotency-Key messaging_NotFoundResponse: description: Not Found content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' messaging_NotFoundResponse_0b38e7044b: description: Not Found content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. messaging_UnauthorizedResponse: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. messaging_UnauthorizedResponse_0b38e7044b: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: '10009' title: Authentication failed detail: The required authentication headers were either invalid or not included in the request. messaging_UnprocessableEntityResponse: description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. messaging_UnprocessableEntityResponse_0b38e7044b: description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/messaging_Errors_0b38e7044b' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. messaging_WabasListResponse: description: Successful response with list of Whatsapp business accounts content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WabaResponse' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' messaging_WhatsappPhonesListResponse: description: Successful response with Whatsapp phone numbers content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WhatsappPhoneResponse' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' messaging_WhatsappTemplateListResponse: description: Successful response with Whatsapp template content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/WhatsappTemplateData' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' messaging_toll_free_verification_GenericErrorResponse: description: Generic error response content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: string title: string detail: string source: pointer: string parameter: string netapps_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/netapps_Errors' netapps_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/netapps_Errors' netapps_UnprocessableEntity_17904fcfbc: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. notifications_BadRequestResponse: description: Bad request, the request was unacceptable, often due to missing a required parameter. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. notifications_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. notifications_NotFoundResponse: description: The requested resource doesn't exist. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. notifications_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. number-lookup_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. number-lookup_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. number-reputation_GenericErrorResponse: description: An error occurred. The response carries the standard Telnyx error envelope. content: application/json: schema: $ref: '#/components/schemas/number-reputation_Errors' examples: validation_error: summary: 422 - request body failed validation value: errors: - code: '10005' title: Invalid parameters detail: field required meta: url: https://developers.telnyx.com/docs/overview/errors/10005 source: pointer: /body/legal_name bad_request: summary: 400 - request rejected by a state guard description: Returned when the request itself is well-formed but the resource is in a state that disallows this action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting). value: errors: - code: '10015' title: Bad Request detail: Cannot update DIR in 'verified' status meta: url: https://developers.telnyx.com/docs/overview/errors/10015 not_found: summary: 404 - resource does not exist or is not yours value: errors: - code: '10009' title: Resource not found detail: Enterprise not found. meta: url: https://developers.telnyx.com/docs/overview/errors/10009 conflict: summary: 409 - request conflicts with current resource state value: errors: - code: '10021' title: Resource in use detail: DIR has 1 active infringement claim(s). Resolve the claim before making this change. meta: url: https://developers.telnyx.com/docs/overview/errors/10021 numbers_BadRequestResponse: description: Bad request, the request was unacceptable, often due to missing a required parameter. content: application/json: schema: $ref: '#/components/schemas/numbers_Errors' numbers_BadRequestResponse_73c9788e53: description: Bad request, the request was unacceptable, often due to missing a required parameter. content: application/json: schema: $ref: '#/components/schemas/Errors' numbers_ForbiddenResponse: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/numbers_Errors' examples: Not authorized: $ref: '#/components/examples/NotAuthorized' numbers_ForbiddenResponse_73c9788e53: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Not authorized: $ref: '#/components/examples/NotAuthorized' numbers_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/numbers_Errors' numbers_NotFoundResponse: description: The requested resource doesn't exist. content: application/json: schema: $ref: '#/components/schemas/numbers_Errors' numbers_NotFoundResponse_73c9788e53: description: The requested resource doesn't exist. content: application/json: schema: $ref: '#/components/schemas/Errors' numbers_UnauthorizedResponse: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/numbers_Errors' examples: Authentication Failed: value: errors: - code: '10009' title: Authentication failed detail: Could not understand the provided credentials. meta: url: https://developers.telnyx.com/docs/overview/errors/10009 numbers_UnauthorizedResponse_73c9788e53: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' examples: Authentication Failed: value: errors: - code: '10009' title: Authentication failed detail: Could not understand the provided credentials. meta: url: https://developers.telnyx.com/docs/overview/errors/10009 numbers_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/numbers_Errors' numbers_UnprocessableEntity_73c9788e53: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' phone-numbers_messaging_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. profiles_messaging_NotFoundResponse: description: Not Found content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. programmable-fax_BadRequestResponse: description: Bad request, the request was unacceptable, often due to missing a required parameter. content: application/json: schema: $ref: '#/components/schemas/programmable-fax_ErrorResponse' examples: missingParameter: value: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10015 programmable-fax_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. programmable-fax_NotFoundResponse: description: The requested resource does not exist content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '404' title: Not Found detail: The requested resource does not exist programmable-fax_UnauthorizedResponse: description: Unauthorized programmable-fax_UnprocessableEntityResponse: description: Unprocessable entity. The request was well-formed but contains semantic errors. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '422' title: Unprocessable Entity detail: The request parameters failed validation rcs-registration_BadRequest: description: The request or idempotency header is malformed. content: application/json: schema: $ref: '#/components/schemas/rcs-registration_ErrorResponse' rcs-registration_Conflict: description: The operation is not allowed in the current lifecycle state or the idempotency key was used for a different request. content: application/json: schema: $ref: '#/components/schemas/rcs-registration_ErrorResponse' rcs-registration_NotFound: description: The resource does not exist, is not owned by the organization, or the provider does not support the requested capability. content: application/json: schema: $ref: '#/components/schemas/rcs-registration_ErrorResponse' rcs-registration_Unauthorized: description: The request is not authenticated. content: application/json: schema: $ref: '#/components/schemas/rcs-registration_ErrorResponse' rcs_messaging_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. sim-cards-configuration_wireless_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/wireless_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. sim-cards-configuration_wireless_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/wireless_Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. sim-cards-monitoring_wireless_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/wireless_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. sim-cards-monitoring_wireless_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/wireless_Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. siprec_siprec_GenericErrorResponse: description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/Errors' siprec_siprec_NotFoundResponse: description: The requested resource does not exist content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: 404 title: Not Found detail: The requested resource does not exist siprec_siprec_UnprocessableEntityResponse: description: Unprocessable entity. The request was well-formed but contains semantic errors. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: 422 title: Unprocessable Entity detail: The request parameters failed validation speech-to-text_UnprocessableEntityResponse: description: Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values and business logic violations. content: application/json: schema: $ref: '#/components/schemas/speech-to-text_Errors' examples: missing_required_parameter: summary: Missing required parameter value: errors: - code: '10004' title: Missing required parameter detail: The 'transcription_engine' parameter is required and cannot be blank. source: pointer: /transcription_engine toll-free-verification_GenericErrorResponse: description: Generic error response content: application/json: schema: $ref: '#/components/schemas/toll-free-verification_Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. users_BadRequestResponse: description: Bad request, the request was unacceptable, often due to missing a required parameter. content: application/json: schema: $ref: '#/components/schemas/users_ErrorResponse' examples: missingParameter: value: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. source: pointer: / meta: url: https://developers.telnyx.com/docs/overview/errors/10015 users_NotFoundResponse: description: The requested resource doesn't exist. content: application/json: schema: $ref: '#/components/schemas/users_ErrorResponse' examples: notFound: value: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. meta: url: https://developers.telnyx.com/docs/overview/errors/10005 source: pointer: / users_UnauthorizedResponse: description: The user doesn't have the required permissions to perform the requested action. content: application/json: schema: $ref: '#/components/schemas/users_ErrorResponse' examples: notAuthorized: value: errors: - code: '10010' title: Not authorized detail: You are not authorized to access the requested resource. meta: url: https://developers.telnyx.com/docs/overview/errors/10010 source: pointer: / verified-numbers_GenericErrorResponse: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10015' title: Bad Request detail: The request failed because it was not well-formed. verified-numbers_NotFoundErrorResponse: description: Resource Not Found content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10005' title: Resource not found detail: The requested resource or URL could not be found. verified-numbers_UnprocessableEntityErrorResponse: description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. verify_GenericErrorResponse: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Errors' video_Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/video_Error' video_GenericErrorResponse: description: Unexpected error content: application/json: schema: type: object properties: success: type: boolean example: false message: type: string example: Error video_ResourceNotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/video_Error' example: code: string title: string detail: string source: pointer: string parameter: string video_UnauthorizedResponse: description: Unauthorized video_UnprocessableEntity: description: Unprocessable entity. Check the 'detail' field in response for details. content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10027' title: Unprocessable Entity detail: The server understood the syntax of the request but was unable to process the instructions. voice-channels_GenericErrorResponse: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Errors' example: errors: - code: '10007' title: Unexpected error detail: An unexpected error occured. web-search_BadRequest: description: Invalid request — validation error or invalid parameters. content: application/json: schema: $ref: '#/components/schemas/WebSearchError' example: error: message: Validation error details: {} web-search_InternalServerError: description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/WebSearchError' example: error: message: Internal server error web-search_NotFound: description: Research task not found. Returned for unknown, malformed, expired, or already-purged task IDs. content: application/json: schema: $ref: '#/components/schemas/WebSearchError' example: error: message: Task not found web-search_ProviderError: description: The upstream search provider returned an error. content: application/json: schema: $ref: '#/components/schemas/WebSearchError' example: error: message: Provider request failed web-search_Unauthorized: description: 'Unauthorized — missing or invalid API key. The API Gateway returns this response before the request reaches the backend service. The error format follows the standard Telnyx JSON:API error envelope with `errors[]`, not the backend-level `WebSearchError` shape.' content: application/json: schema: $ref: '#/components/schemas/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. Useful for derived numeric checks, e.g. `cart_total + shipping > 50`. Both operands should resolve to numbers at runtime.' example: left: name: cart_total type: variable op: + right: name: shipping_cost type: variable type: arithmetic properties: left: $ref: '#/components/schemas/Expression' op: description: Arithmetic operator applied to `left` and `right`. enum: - + - '-' - '*' - / - '%' title: Op type: string right: $ref: '#/components/schemas/Expression' type: const: arithmetic title: Type type: string required: - type - op - left - right title: ArithmeticExpression type: object ArtifactContent: type: object additionalProperties: false required: - text properties: text: type: string AssignProfileToCampaignRequest: title: AssignProfileToCampaignRequest required: - messagingProfileId type: object properties: messagingProfileId: title: Messagingprofileid type: string description: The ID of the messaging profile that you want to link to the specified campaign. example: 4001767e-ce0f-4cae-9d5f-0d5e636e7809 tcrCampaignId: title: Tcrcampaignid type: string description: The TCR ID of the shared campaign you want to link to the specified messaging profile (for campaigns not created using Telnyx 10DLC services only). If you supply this ID in the request, do not also include a campaignId. example: CWZTFH1 campaignId: title: Campaignid type: string description: The ID of the campaign you want to link to the specified messaging profile. If you supply this ID in the request, do not also include a tcrCampaignId. example: 4b300178-131c-d902-d54e-72d90ba1620j AssignProfileToCampaignResponse: title: AssignProfileToCampaignResponse required: - messagingProfileId - taskId type: object properties: messagingProfileId: title: Messagingprofileid type: string description: The ID of the messaging profile that you want to link to the specified campaign. example: 4001767e-ce0f-4cae-9d5f-0d5e636e7809 tcrCampaignId: title: Tcrcampaignid type: string description: The TCR ID of the shared campaign you want to link to the specified messaging profile (for campaigns not created using Telnyx 10DLC services only). If you supply this ID in the request, do not also include a campaignId. example: CWZTFH1 campaignId: title: Campaignid type: string description: The ID of the campaign you want to link to the specified messaging profile. If you supply this ID in the request, do not also include a tcrCampaignId. example: 4b300178-131c-d902-d54e-72d90ba1620j taskId: title: Taskid type: string description: The ID of the task associated with assigning a messaging profile to a campaign. example: 667a80f8-b0a9-49d0-b9ab-a7a1bcc45086 AssignmentTaskStatusResponse: title: AssignmentTaskStatusResponse required: - taskId - status type: object properties: taskId: title: Taskid type: string status: allOf: - $ref: '#/components/schemas/10dlc_TaskStatus' type: string description: The status of the task associated with assigning a messaging profile to a campaign. example: pending createdAt: title: Createdat type: string format: date-time updatedAt: title: Updatedat type: string format: date-time Assistant: type: object title: Assistant description: Assistant configuration including choice of LLM, custom instructions, and tools. properties: model: description: The model to be used by the voice assistant. type: string default: Qwen/Qwen3-235B-A22B example: Qwen/Qwen3-235B-A22B instructions: description: The system instructions that the voice assistant uses during the gather command type: string example: You are a friendly voice assistant. openai_api_key_ref: description: 'This is necessary only if the model selected is from OpenAI. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your OpenAI API Key. Warning: Free plans are unlikely to work with this integration.' type: string example: my_openai_api_key tools: description: The tools that the voice assistant can use. type: array items: oneOf: - $ref: '#/components/schemas/BookAppointmentTool' - $ref: '#/components/schemas/CheckAvailabilityTool' - $ref: '#/components/schemas/WebhookTool' - $ref: '#/components/schemas/HangupTool' - $ref: '#/components/schemas/TransferTool' - $ref: '#/components/schemas/CallControlRetrievalTool' discriminator: propertyName: type mapping: book_appointment: '#/components/schemas/BookAppointmentTool' check_availability: '#/components/schemas/CheckAvailabilityTool' webhook: '#/components/schemas/WebhookTool' hangup: '#/components/schemas/HangupTool' transfer: '#/components/schemas/TransferTool' retrieval: '#/components/schemas/CallControlRetrievalTool' AssistantA2AAgent: type: object title: AssistantA2AAgent description: 'A remote agent, reachable over the A2A (Agent2Agent) protocol, that an assistant can delegate to. Tools are not configured here: at the start of every conversation the agent''s card is fetched and one tool is derived per skill the card advertises.' properties: name: type: string maxLength: 43 description: Identifies the agent and seeds the names of the tools derived from its card (`a2a__`). Characters outside `[A-Za-z0-9_]` are replaced with `_` before the tool name is built, so two agents whose names differ only in punctuation collide and are rejected. example: billing_agent url: type: string description: 'The agent''s base URL, or the URL of its agent card. At most 2,048 bytes once UTF-8 encoded. `/.well-known/agent-card.json` is appended to the path unless it already ends in `.json`. Must be an `http://` or `https://` URL for an externally reachable host: internal destinations (`localhost`, private and reserved IP ranges, `.local` domains) are rejected, and the hostname may not contain a `{{...}}` placeholder. Placeholders in the path are allowed.' example: https://agents.example.com headers: type: array items: $ref: '#/components/schemas/A2AAgentHeader' description: Headers sent when fetching this agent's card and on every call made to it. Use them to authenticate to the agent. async: type: boolean default: false description: When `true`, the assistant hands the turn straight back to the model and the agent's answer is delivered into the conversation once it arrives, instead of the caller waiting for it in silence. timeout_ms: type: integer minimum: 1 maximum: 4294967295 description: Total budget, in milliseconds, for one call to this agent, including any time spent polling a task that is still running. Omit to inherit the assistant's tool timeout. example: 30000 poll_interval_ms: type: integer minimum: 1 maximum: 4294967295 description: How often, in milliseconds, to poll an agent task that has not finished yet. Defaults to 500. example: 500 messages: type: array description: Filler messages spoken while a call to this agent is in progress. `request_start` messages are spoken immediately when the call begins. `request_response_delayed` messages are spoken after `timing_ms` has elapsed only if the agent has not answered yet. Filler messages are not used when `async` is `true`. items: oneOf: - title: A2AAgentRequestStartMessage type: object required: - type - content properties: type: type: string const: request_start description: Speak the filler message immediately when the call to the agent begins. content: type: string minLength: 1 description: The text the assistant speaks. timing_ms: type: integer minimum: 100 maximum: 120000 description: An optional delay value. This value is ignored for `request_start` messages. additionalProperties: false - title: A2AAgentRequestResponseDelayedMessage type: object required: - type - content - timing_ms properties: type: type: string const: request_response_delayed description: Speak the filler message only if the agent has not answered yet after `timing_ms`. content: type: string minLength: 1 description: The text the assistant speaks. timing_ms: type: integer minimum: 100 maximum: 120000 description: How long to wait, in milliseconds, before speaking this message. additionalProperties: false required: - name - url AssistantChatReq: properties: content: type: string title: Content description: The message content sent by the client to the assistant example: Tell me a joke about cats name: type: string title: Name description: The optional display name of the user sending the message example: Charlie conversation_id: type: string title: Conversation Id description: A unique identifier for the conversation thread, used to maintain context example: 42b20469-1215-4a9a-8964-c36f66b406f4 stream: type: boolean title: Stream description: 'When true, the response is streamed as Server-Sent Events (`text/event-stream`): `delta` events carry content fragments as they are generated, a final `done` event carries the full content plus `whatsapp_template`, and a terminal `error` event reports failures that happen after streaming started. When false (default), the response is a single JSON object.' default: false type: object required: - content - conversation_id title: AssistantChatReq AssistantChatResponse: properties: content: type: string title: Content description: The assistant's generated response based on the input message and context. example: Why did the cat sit on the computer? Because it wanted to keep an eye on the mouse! type: object required: - content title: AssistantChatResponse AssistantDeletedResponse: properties: id: type: string title: Id object: type: string title: Object deleted: type: boolean title: Deleted type: object required: - id - object - deleted title: AssistantDeletedResponse description: 'Aligns with the OpenAI API: https://platform.openai.com/docs/api-reference/assistants/deleteAssistant' AssistantIntegration: type: object title: AssistantIntegration description: Reference to a connected integration attached to an assistant. Discover available integrations with `/ai/integrations` and connected integrations with `/ai/integrations/connections`. properties: integration_id: type: string description: Catalog integration ID to attach. This is the `id` from the integrations catalog at `/ai/integrations` (the same value also appears as `integration_id` on entries returned by `/ai/integrations/connections`). It is **not** the connection-level `id` from `/ai/integrations/connections`. allowed_list: type: array items: type: string description: Optional per-assistant allowlist of integration tool names. When omitted or empty, all tools allowed by the connected integration are available to the assistant. required: - integration_id AssistantMCPServer: type: object title: AssistantMCPServer description: Reference to an MCP server attached to an assistant. Create and manage MCP servers with the `/ai/mcp_servers` endpoints, then attach them to assistants by ID. properties: id: type: string description: ID of the MCP server to attach. This must be the `id` of an MCP server returned by the `/ai/mcp_servers` endpoints. allowed_tools: type: array items: type: string description: Optional per-assistant allowlist of MCP tool names. When omitted, the assistant uses the MCP server's configured `allowed_tools`. required: - id AssistantMessage: type: object title: Assistant Message description: Messages sent by the model in response to user messages. properties: role: description: The role of the messages author, in this case `assistant`. type: string enum: - assistant content: description: The contents of the assistant message. Required unless `tool_calls` type: string tool_calls: type: array description: The tool calls generated by the model, such as function calls. items: $ref: '#/components/schemas/ToolCall' metadata: $ref: '#/components/schemas/MessageMetadata' required: - role example: role: assistant content: Hello, I'm John. AssistantScheduledCallAttempt: properties: attempt_number: type: integer title: Attempt Number attempted_at: type: string format: date-time title: Attempted At call_status: type: string title: Call Status description: 'Values: busy, canceled, no-answer, ringing, completed, failed, in-progress' call_duration: title: Call Duration type: integer description: Duration of the call in seconds telnyx_call_control_id: title: Telnyx Call Control Id type: string type: object required: - attempt_number - attempted_at - call_status title: AssistantScheduledCallAttempt description: One row in `call_attempts` — captures the terminal outcome of a single dispatch. AssistantSmsChatReq: properties: from: type: string title: From to: type: string title: To text: type: string title: Text conversation_metadata: title: Conversation Metadata additionalProperties: anyOf: - type: string - type: integer - type: boolean type: object should_create_conversation: title: Should Create Conversation type: boolean type: object required: - from - to title: AssistantSmsChatReq AssistantSmsChatResponse: properties: conversation_id: title: Conversation Id type: string type: object title: AssistantSmsChatResponse AssistantTarget: description: 'Edge target referencing a different assistant. When the edge fires, the conversation hands off to `assistant_id`: the active assistant on the conversation row is rewritten and the new assistant''s flow starts at its own `start_node_id`. The current turn''s LLM response is delivered to the user as-is; subsequent turns route to the new assistant.' properties: assistant_id: description: ID of the assistant the conversation transitions to. example: assistant-billing title: Assistant Id type: string position: $ref: '#/components/schemas/NodePosition' description: Optional canvas coordinates for rendering the target assistant as a node in authoring UIs. Pure presentation — the runtime ignores it; round-trips so frontends can persist graph layout across reloads. When multiple edges target the same assistant, each edge's `position` is independent (frontends typically use the first non-null one). example: x: 600 y: 80 type: const: assistant title: Type type: string voice_mode: default: unified description: Voice behavior when handing off to the target assistant, mirroring the handoff tool's `voice_mode`. `unified` (default) keeps the current voice across the handoff; `distinct` lets the target assistant speak with its own configured voice. Only applies to assistant targets — node targets override voice via the node's own `voice_settings`. enum: - unified - distinct title: Voice Mode type: string required: - type - assistant_id title: AssistantTarget type: object AssistantTestResponse: properties: test_id: type: string format: uuid title: Test Id description: Unique identifier for the assistant test. example: 123e4567-e89b-12d3-a456-426614174000 name: type: string title: Name description: Human-readable name of the test. example: Customer Support Bot Test description: type: string title: Description description: Detailed description of the test's purpose and scope. telnyx_conversation_channel: allOf: - $ref: '#/components/schemas/TelnyxConversationChannel' description: Communication channel used for test execution. example: web_chat destination: type: string title: Destination description: Target destination for test conversations. max_duration_seconds: type: integer title: Max Duration Seconds description: Maximum allowed duration for test execution in seconds. test_suite: type: string title: Test Suite description: Test suite grouping for organizational purposes. instructions: type: string title: Instructions description: Detailed test scenario instructions and objectives. rubric: items: type: object required: - name - criteria properties: name: type: string description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity. criteria: type: string description: Specific guidance on how to assess the assistant’s performance for this rubric item. additionalProperties: false type: array title: Rubric description: Evaluation criteria used to assess test performance. example: - criteria: Responds within 30 seconds name: Response Time created_at: type: string format: date-time title: Created At description: Timestamp when the test was created. example: '2024-01-16T09:00:00Z' type: object required: - test_id - name - telnyx_conversation_channel - rubric - created_at title: AssistantTestResponse description: 'Response model containing complete assistant test information. Returns all test configuration details including evaluation criteria, scheduling, and metadata. Used when retrieving individual tests or after creating/updating tests.' AssistantTools: description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. On update, a sent `tools` array fully replaces the assistant's inline tools; omit the field to leave them unchanged. Each tool type except `function`, `webhook`, and `client_side_tool` allows at most one instance per assistant, counted across inline `tools` and shared `tool_ids` combined. type: array items: oneOf: - $ref: '#/components/schemas/FunctionTool' - $ref: '#/components/schemas/inference-embedding_WebhookTool' - $ref: '#/components/schemas/ClientSideTool' - $ref: '#/components/schemas/RetrievalTool' - $ref: '#/components/schemas/HandoffTool' - $ref: '#/components/schemas/inference-embedding_HangupTool' - $ref: '#/components/schemas/inference-embedding_TransferTool' - $ref: '#/components/schemas/InviteTool' - $ref: '#/components/schemas/SIPReferTool' - $ref: '#/components/schemas/DTMFTool' - $ref: '#/components/schemas/SendMessageTool' - $ref: '#/components/schemas/SkipTurnTool' - $ref: '#/components/schemas/VisionTool' - $ref: '#/components/schemas/PayTool' - $ref: '#/components/schemas/UpdateDynamicVariablesTool' AssistantWhatsappChatReq: properties: from: type: string title: From description: WhatsApp number on your account to send from, in E.164 format. Its messaging profile must have this assistant configured. to: type: string title: To description: Customer to message, as an E.164 phone number or a WhatsApp business-scoped user ID (BSUID). content: type: string title: Content description: Instruction for the assistant, including the values for the template variables, e.g. `Send the login verification code 482913 to the customer.` conversation_metadata: title: Conversation Metadata description: Metadata stored on the conversation. Keys starting with `telnyx_` and the `assistant_id` key are reserved. additionalProperties: anyOf: - type: string - type: integer - type: boolean type: object type: object required: - from - to - content title: AssistantWhatsappChatReq AssistantWhatsappChatResponse: properties: conversation_id: title: Conversation Id type: string description: ID of the conversation created for this WhatsApp chat. message_id: title: Message Id type: string description: ID of the WhatsApp template message that was sent. type: object required: - conversation_id - message_id title: AssistantWhatsappChatResponse AssistantsListData: properties: data: items: $ref: '#/components/schemas/inference-embedding_Assistant' type: array title: Data type: object required: - data title: AssistantsListData AttachmentRequest: type: object properties: filename: type: string description: Attachment filename. Defaults to "attachment" when omitted. content_type: type: string description: MIME content type. Defaults to "application/octet-stream" when omitted. content: type: string description: Attachment content, typically Base64-encoded. Defaults to empty string when omitted. disposition: type: string default: attachment description: MIME disposition (`attachment` or `inline`). content_id: type: string nullable: true description: MIME Content-ID used to reference an inline attachment. AttachmentResponse: type: object description: EDR-aligned attachment metadata. The base64 `content` is never returned. properties: url: type: string format: uri nullable: true description: Telnyx-hosted public URL for the attachment content. sha256: type: string nullable: true description: SHA-256 hex digest of the attachment content. size_bytes: type: integer nullable: true description: Attachment size in bytes. filename: type: string content_type: type: string disposition: type: string default: attachment description: MIME disposition (e.g. `attachment` or `inline`). Runtime passes through the stored value without enforcing an enum. content_id: type: string nullable: true description: MIME Content-ID for inline references. required: - url - sha256 - size_bytes - filename - content_type - disposition - content_id AudioChunkFrame: type: object description: Server-to-client frame containing a base64-encoded audio chunk. properties: type: type: string const: audio_chunk description: Frame type identifier. audio: type: - string - 'null' description: Base64-encoded audio data. May be `null` for providers that use `drop_concatenated_audio` mode (Telnyx, Minimax, Resemble) — in that case only streamed chunks carry audio. text: type: - string - 'null' description: The text segment that this audio chunk corresponds to. isFinal: type: boolean description: Always `false` for audio chunk frames. cached: type: boolean description: Whether this audio was served from cache. timeToFirstAudioFrameMs: type: integer description: Milliseconds from the start-of-speech request to the first audio frame. Only present on the first audio chunk of a synthesis request. AudioTranscriptionRequest: type: object properties: file: description: 'The audio file object to transcribe, in one of these formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm. File uploads are limited to 100 MB. Cannot be used together with `file_url`. Note: the `deepgram/*` models only support mp3 and wav formats.' type: string format: binary file_url: description: 'Link to audio file in one of these formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm. Support for hosted files is limited to 100MB. Cannot be used together with `file`. Note: the `deepgram/*` models only support mp3 and wav formats.' type: string example: https://example.com/file.mp3 model: description: 'ID of the model to use. `distil-whisper/distil-large-v2` is lower latency but English-only. `openai/whisper-large-v3-turbo` is multi-lingual but slightly higher latency. The `deepgram/*` models only accept mp3/wav files: `deepgram/nova-3` covers ~49 languages plus `multi` and `deepgram/nova-2` covers ~33, while the `-medical` variants are tuned for clinical vocabulary and accept English only (`en` and its regional variants, e.g. `en-US`, `en-GB`). `nvidia/parakeet-v3` is multilingual with automatic language detection; `omi-health/omi-med-stt-v1` is a medical model, English only.' 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. Sent as a JSON string in multipart requests and passed through to Deepgram as query parameters. Any other model with `model_config` returns 422. Can include Deepgram-specific options such as `smart_format`, `punctuate`, `diarize` (speaker labels), `multichannel` (transcribe each channel independently; billed duration is file duration multiplied by the number of channels), `utterances`, `numerals`, and `language`. If `language` is provided both as a top-level parameter and in `model_config`, the top-level parameter takes precedence. additionalProperties: true example: smart_format: true punctuate: true required: - model AudioTranscriptionResponse: type: object description: Response fields vary by model. `distil-whisper/distil-large-v2` returns `text`, `duration`, and `segments` in `verbose_json` mode. `openai/whisper-large-v3-turbo` returns `text` only. The `deepgram/*` models return `text` and, depending on `model_config`, may include `words` with per-word timestamps and speaker labels. The Parakeet models (`nvidia/parakeet-v3`, `omi-health/omi-med-stt-v1`) return `text` only. 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`. With `multichannel`, speakers are numbered per channel from 0, so identify a speaker by (`channel`, speaker). items: type: integer channel: type: integer description: Zero-indexed audio channel of this segment. Returned by the `deepgram/*` models when `multichannel` is enabled via `model_config` and the file has more than one channel. Segments from all channels are merged in one list ordered by start time. required: - id - start - end - text AudioTranscriptionResponseWord: type: object description: Word-level timing detail. Only present when using a `deepgram/*` model with `model_config` options that enable word timestamps. properties: word: type: string description: The transcribed word. start: type: number description: Start time of the word in seconds. end: type: number description: End time of the word in seconds. confidence: type: number description: Confidence score for the word (0.0 to 1.0). speaker: type: integer description: Speaker index. Only present when diarization is enabled via `model_config`. speaker_confidence: type: number description: Confidence score for the speaker assignment (0.0 to 1.0). Only present when diarization is enabled via `model_config`. punctuated_word: type: string description: The transcribed word with punctuation and capitalisation applied. Only present when `punctuate` or `smart_format` is enabled via `model_config`. required: - word - start - end AudioVisualizerConfig: type: object properties: color: type: string enum: - verdant - twilight - bloom - mystic - flare - glacier description: The color theme for the audio visualizer. preset: type: string description: The preset style for the audio visualizer. title: AudioVisualizerConfig AuditEventChanges: type: object title: Audit Event Changes description: Details of the changes made to a resource. properties: field: type: string description: The name of the field that was changed. May use the dot notation to indicate nested fields. example: nested.field.name to: anyOf: - type: string - type: number - type: boolean - type: object additionalProperties: true - type: array items: {} - type: 'null' description: The new value of the field. Can be any JSON type. example: 12345 from: anyOf: - type: string - type: number - type: boolean - type: object additionalProperties: true - type: array items: {} - type: 'null' description: The previous value of the field. Can be any JSON type. example: 54321 AuditLog: type: object title: Audit Log Entry properties: id: type: string format: uuid description: Unique identifier for the audit log entry. example: 550e8400-e29b-41d4-a716-446655440000 user_id: type: string format: uuid description: Unique identifier for the user who made the change. example: 550e8400-e29b-41d4-a716-446655440001 record_type: type: string description: The type of the resource being audited. example: audit_event resource_id: type: string description: Unique identifier for the resource that was changed. example: 550e8400-e29b-41d4-a716-446655440002 alternate_resource_id: type: - string - 'null' description: An alternate identifier for a resource which may be considered unique enough to identify the resource but is not the primary identifier for the resource. For example, this field could be used to store the phone number value for a phone number when the primary database identifier is a separate distinct value. example: '+14155551234' change_made_by: type: string enum: - telnyx - account_manager - account_owner - organization_member description: Indicates if the change was made by Telnyx on your behalf, the organization owner, a member of your organization, or in the case of managed accounts, the account manager. example: organization_member changes: type: - array - 'null' items: $ref: '#/components/schemas/AuditEventChanges' description: Details of the changes made to the resource. example: - field: field.name to: old value from: new value organization_id: type: string format: uuid description: Unique identifier for the organization that owns the resource. example: 550e8400-e29b-41d4-a716-446655440003 change_type: type: string description: The type of change that occurred. example: update created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the change occurred. example: '2026-01-03T00:00:00Z' AuditLogList: type: object title: Audit Log List properties: data: type: array items: $ref: '#/components/schemas/AuditLog' meta: $ref: '#/components/schemas/audit-logs_PaginationMeta' AuditLogsErrors: type: object properties: errors: type: array items: $ref: '#/components/schemas/audit-logs_Error' AuthenticationMethod: type: string enum: - token - certificate default: token description: Authentication method used when connecting to the external LLM endpoint. title: AuthenticationMethod AuthenticationProvider: type: object title: AuthenticationProvider properties: id: type: string format: uuid description: Uniquely identifies the authentication provider. example: 35146afd-df93-4963-b1e9-1a085e2ae874 record_type: type: string description: Identifies the type of the resource. example: authentication_provider name: $ref: '#/components/schemas/name' short_name: $ref: '#/components/schemas/short_name' organization_id: $ref: '#/components/schemas/organization_id' active: $ref: '#/components/schemas/active' activated_at: type: string description: ISO 8601 formatted date indicating when the authentication provider was activated. format: date-time example: '2018-02-02T22:25:27.521Z' settings: type: object description: The settings associated with the authentication provider. properties: assertion_consumer_service_url: type: string description: The Assertion Consumer Service URL for the service provider (Telnyx). format: uri example: https://api.telnyx.com/sso/saml/auth/myorg service_provider_entity_id: type: string description: The Entity ID for the service provider (Telnyx). format: uri example: https://api.telnyx.com/sso/saml/metadata/myorg service_provider_login_url: type: string description: The login URL for the service provider (Telnyx). Users navigate to this URL to initiate SSO login. format: uri example: https://api.telnyx.com/sso/myorg idp_entity_id: type: string description: The Entity ID for the identity provider (IdP). format: uri example: https://myorg.myidp.com/saml/metadata idp_sso_target_url: type: string description: The SSO target url for the identity provider (IdP). format: uri example: https://myorg.myidp.com/trust/saml2/http-post/sso idp_cert_fingerprint: type: string description: The certificate fingerprint for the identity provider (IdP) example: 13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7 idp_cert_fingerprint_algorithm: type: string description: The algorithm used to generate the identity provider's (IdP) certificate fingerprint enum: - sha1 - sha256 - sha384 - sha512 default: sha1 example: sha256 name_identifier_format: type: string description: The name identifier format associated with the authentication provider. This must be the same for both the Identity Provider (IdP) and the service provider (Telnyx). example: urn:oasis:names:tc:SAML:1.1:nameid-format idp_slo_target_url: type: string description: The Single Logout (SLO) target URL for the identity provider (IdP). format: uri example: https://myorg.myidp.com/trust/saml2/http-redirect/slo idp_certificate: type: string description: The full X.509 certificate for the identity provider (IdP). example: '-----BEGIN CERTIFICATE----- MIIC... -----END CERTIFICATE-----' idp_attribute_names: type: object description: Mapping of SAML attribute names used by the identity provider (IdP). example: email: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress provision_groups: type: boolean description: Whether group provisioning is enabled for this authentication provider. example: false created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. format: date-time example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. format: date-time example: '2018-02-02T22:25:27.521Z' AuthenticationProviderCreate: type: object required: - name - short_name - settings properties: name: $ref: '#/components/schemas/name' short_name: $ref: '#/components/schemas/short_name' active: $ref: '#/components/schemas/active' settings: $ref: '#/components/schemas/settings' settings_url: $ref: '#/components/schemas/settings_url' AuthorizationServerMetadata: type: object properties: issuer: type: string format: uri description: Authorization server issuer URL token_endpoint: type: string format: uri description: Token endpoint URL introspection_endpoint: type: string format: uri description: Token introspection endpoint URL jwks_uri: type: string format: uri description: JWK Set endpoint URL registration_endpoint: type: string format: uri description: Dynamic client registration endpoint URL authorization_endpoint: type: string format: uri description: Authorization endpoint URL grant_types_supported: type: array items: type: string description: Supported grant types code_challenge_methods_supported: type: array items: type: string description: Supported PKCE code challenge methods response_types_supported: type: array items: type: string description: Supported response types token_endpoint_auth_methods_supported: type: array items: type: string description: Supported token endpoint authentication methods scopes_supported: type: array items: type: string description: Supported OAuth scopes example: - admin AutoRechargePref: type: object properties: id: type: string example: '1524126400473204723' description: The unique identifier for the auto recharge preference. record_type: type: string example: auto_recharge_pref description: The record type. threshold_amount: type: string example: '104.00' description: The threshold amount at which the account will be recharged. x-format: decimal recharge_amount: type: string example: '104.00' description: The amount to recharge the account, the actual recharge amount will be the amount necessary to reach the threshold amount plus the recharge amount. x-format: decimal enabled: type: boolean example: true description: Whether auto recharge is enabled. invoice_enabled: type: boolean example: true preference: type: string enum: - credit_paypal - ach example: credit_paypal description: The payment preference for auto recharge. AutoRechargePrefRequest: type: object properties: threshold_amount: type: string example: '104.00' description: The threshold amount at which the account will be recharged. x-format: decimal recharge_amount: type: string example: '104.00' description: The amount to recharge the account, the actual recharge amount will be the amount necessary to reach the threshold amount plus the recharge amount. x-format: decimal enabled: type: boolean example: true description: Whether auto recharge is enabled. invoice_enabled: type: boolean example: true preference: type: string enum: - credit_paypal - ach example: credit_paypal description: The payment preference for auto recharge. AutoRespConfigCreateSchema: title: AutoRespConfigCreateSchema required: - op - keywords - country_code type: object properties: op: title: Op enum: - start - stop - info type: string keywords: title: Keywords type: array items: type: string example: - keyword1 - keyword2 resp_text: title: Resp Text type: string example: Thank you for your message country_code: title: Country Code type: string example: US AutorespConfigResponseSchema: title: AutorespConfigResponseSchema required: - data type: object properties: data: $ref: '#/components/schemas/AutorespConfigSchema' AutorespConfigSchema: title: AutorespConfigSchema required: - op - keywords - country_code - id - created_at - updated_at type: object properties: op: title: Op enum: - start - stop - info type: string example: start keywords: title: Keywords type: array items: type: string example: - START - BEGIN resp_text: title: Resp Text type: string example: Thank you for subscribing to our service. country_code: title: Country Code type: string example: '*' id: title: Id type: string example: b8f9c1c0-5b5a-4b1e-8c1c-0b5a4b1e8c1c created_at: title: Created At type: string format: date-time updated_at: title: Updated At type: string format: date-time AutorespConfigsResponseSchema: title: AutorespConfigsResponseSchema description: List of Auto-Response Settings required: - data - meta type: object properties: data: title: Data type: array items: $ref: '#/components/schemas/AutorespConfigSchema' meta: $ref: '#/components/schemas/messaging_PaginationMeta' AvailablePhoneNumber: type: object properties: record_type: type: string example: available_phone_number enum: - available_phone_number phone_number: type: string example: '+19705555098' vanity_format: type: string best_effort: type: boolean description: Specifies whether the phone number is an exact match based on the search criteria or not. example: false quickship: type: boolean description: Specifies whether the phone number can receive calls immediately after purchase or not. example: true reservable: type: boolean description: Specifies whether the phone number can be reserved before purchase or not. example: true region_information: type: array items: $ref: '#/components/schemas/RegionInformation' cost_information: $ref: '#/components/schemas/CostInformation' features: type: array items: $ref: '#/components/schemas/Feature' example: record_type: available_phone_number phone_number: '+19705555098' vanity_format: '' best_effort: false quickship: true reservable: true region_information: - region_type: country_code region_name: US cost_information: upfront_cost: '3.21' monthly_cost: '6.54' currency: USD features: - name: sms - name: voice AvailablePhoneNumberBlock: type: object properties: record_type: type: string example: available_phone_number_block enum: - available_phone_number_block phone_number: type: string example: '+19705555000' range: type: integer example: 10 region_information: type: array items: $ref: '#/components/schemas/RegionInformation' cost_information: $ref: '#/components/schemas/CostInformation' features: type: array items: $ref: '#/components/schemas/Feature' example: record_type: available_phone_number_block phone_number: '+19705555000' range: 10 region_information: - region_type: country_code region_name: US cost_information: upfront_cost: '3.21' monthly_cost: '6.54' currency: USD features: - name: sms - name: voice AvailablePhoneNumbersMetadata: type: object example: total_results: 100 best_effort_results: 50 properties: total_results: type: integer example: 1 best_effort_results: type: integer example: 0 AvailableService: type: string title: Available service enum: - cloud_vpn - private_wireless_gateway - virtual_cross_connect Avatar: type: object additionalProperties: false required: - id - name - provider - avatar_type - hosted - image_url properties: id: $ref: '#/components/schemas/AvatarId' name: type: string minLength: 1 maxLength: 255 description: Customer-facing avatar name. example: Customer portrait provider: type: string const: telnyx description: Avatar provider. The first release supports Telnyx avatars. example: telnyx avatar_type: $ref: '#/components/schemas/AvatarType' hosted: type: boolean const: true description: Indicates that avatar rendering runs on Telnyx-operated infrastructure. example: true image_url: type: string format: uri pattern: ^https:// description: HTTPS image URL suitable for an avatar selection thumbnail. If the URL expires, list or retrieve the avatar again to refresh it. example: https://example.com/avatar.png image_url_expires_at: type: string format: date-time description: Expiration time of `image_url`. Omitted when the URL does not expire. example: '2026-10-13T15:00:00Z' suggested_voice_id: type: string minLength: 0 maxLength: 255 readOnly: true description: Optional recommended Telnyx text-to-speech voice for this avatar. An omitted field or empty string means no recommendation is available. Custom avatars have no suggested voice. It is informational and selecting the avatar does not automatically change the AI Assistant's configured voice. example: Telnyx.Ultra.db6b0ed5-d5d3-463d-ae85-518a07d3c2b4 content_type: $ref: '#/components/schemas/AvatarContentType' size_bytes: type: integer minimum: 1 maximum: 10485760 description: Size of a custom avatar image in bytes. example: 248512 width_px: type: integer minimum: 256 maximum: 8192 description: Decoded width of a custom avatar image. example: 1920 height_px: type: integer minimum: 256 maximum: 8192 description: Decoded height of a custom avatar image. example: 1080 created_at: type: string format: date-time description: Time when the custom avatar was created. example: '2026-10-13T14:00:00Z' updated_at: type: string format: date-time description: Time when the custom avatar was last updated. example: '2026-10-13T14:00:00Z' AvatarContentType: type: string enum: - image/jpeg - image/png - image/webp description: MIME type of a custom avatar image. AvatarError: type: object additionalProperties: true required: - code - title - detail - meta properties: code: type: string description: Telnyx error code. example: '10015' title: type: string description: Short description of the error. example: Bad Request detail: type: string description: Human-readable details about the error. example: The request failed because it was not well-formed. source: $ref: '#/components/schemas/AvatarErrorSource' meta: $ref: '#/components/schemas/AvatarErrorMeta' AvatarErrorMeta: type: object additionalProperties: true required: - url properties: url: type: string format: uri description: Link to the Telnyx error-code documentation. example: https://developers.telnyx.com/docs/overview/errors/10027 AvatarErrorResponse: type: object required: - errors properties: errors: type: array minItems: 1 items: $ref: '#/components/schemas/AvatarError' AvatarErrorSource: type: object additionalProperties: true properties: pointer: type: string description: Location of the invalid request value. example: /image_file AvatarId: type: string minLength: 1 maxLength: 128 pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$ description: Stable identifier returned by the Avatars API. Discover available stock IDs with GET /v2/ai/avatars and filter[avatar_type]=stock rather than maintaining a fixed list. Custom avatar IDs use the `avatar_` prefix and must belong to the authenticated organization. The service validates that the selected avatar is available. example: avatar_0123456789abcdef0123456789abcdef AvatarListMeta: type: object required: - total_pages - total_results - page_number - page_size properties: total_pages: type: integer minimum: 0 description: Total number of pages for the current filters. example: 1 total_results: type: integer minimum: 0 description: Total number of matching avatars. example: 1 page_number: type: integer minimum: 1 description: Current page number. example: 1 page_size: type: integer minimum: 1 maximum: 100 description: Maximum number of avatars returned on each page. example: 20 AvatarListResponse: type: object additionalProperties: false required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Avatar' meta: $ref: '#/components/schemas/AvatarListMeta' AvatarResponse: type: object additionalProperties: false required: - data properties: data: $ref: '#/components/schemas/Avatar' AvatarSettings: title: AvatarSettings description: '**Beta:** Saved Telnyx avatar configuration returned for this assistant.' oneOf: - $ref: '#/components/schemas/TelnyxAvatarSettings' discriminator: propertyName: provider mapping: telnyx: '#/components/schemas/TelnyxAvatarSettings' AvatarSettingsRequest: title: AvatarSettingsRequest description: '**Beta:** Telnyx avatar configuration accepted when creating or updating an assistant. Set `provider` to `telnyx`.' oneOf: - $ref: '#/components/schemas/TelnyxAvatarSettings' discriminator: propertyName: provider mapping: telnyx: '#/components/schemas/TelnyxAvatarSettings' AvatarType: type: string enum: - stock - custom description: Whether the avatar is provided by Telnyx or was uploaded by the authenticated organization. AwsAccessKeyId: description: AWS credentials access key id. type: string example: AKIAIOSFODNN7EXAMPLE AwsProviderParams: type: object description: AWS Polly provider-specific parameters. properties: language_code: type: string description: Language code (e.g. `en-US`, `es-ES`). text_type: type: string description: Input text type. enum: - text - ssml lexicon_names: type: array items: type: string description: List of lexicon names to apply. output_format: type: string description: Audio output format. sample_rate: type: string description: Audio sample rate. AwsSecretAccessKey: description: AWS secret access key. type: string example: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY AzureAccountKey: description: Azure Blob Storage account key. type: string example: bPxRfiCYEXAMPLEKEY AzureAccountName: description: Azure Blob Storage account name. type: string example: my-account AzureConfigurationData: type: object title: Azure Blob Storage Configuration Data properties: backend: type: string enum: - azure description: Storage backend type bucket: $ref: '#/components/schemas/Bucket' account_name: $ref: '#/components/schemas/AzureAccountName' account_key: $ref: '#/components/schemas/AzureAccountKey' required: - backend AzureProviderParams: type: object description: Azure Cognitive Services provider-specific parameters. properties: language_code: type: string description: Language code (e.g. `en-US`). default: en-US output_format: type: string description: Azure audio output format. default: audio-24khz-160kbitrate-mono-mp3 text_type: type: string description: Input text type. Use `ssml` for SSML-formatted input. enum: - text - ssml default: text api_key: type: string description: Custom Azure API key. If not provided, the default Telnyx key is used. region: type: string description: Azure region (e.g. `eastus`, `westeurope`). deployment_id: type: string description: Custom Azure deployment ID. effect: type: string description: Azure audio effect to apply. gender: type: string description: Voice gender preference. AzureTranscriptionLanguage: title: Azure transcription engine list of languages type: string description: Language to use for speech recognition example: en default: en enum: - af - am - ar - bg - bn - bs - ca - cs - cy - da - de - el - en - es - et - eu - fa - fi - fr - ga - gl - gu - he - hi - hr - hu - hy - id - is - it - ja - ka - kk - km - kn - ko - lo - lt - lv - mk - ml - mn - mr - ms - mt - my - nb - ne - nl - pl - ps - pt - ro - ru - si - sk - sl - so - sq - sr - sv - sw - ta - te - th - tr - uk - ur - uz - vi - wuu - yue - zh - zu - auto AzureTranscriptionRegion: title: Azure transcription engine list of regions type: string description: Azure region to use for speech recognition example: eastus enum: - australiaeast - centralindia - eastus - northcentralus - westeurope - westus2 AzureVoiceSettings: type: object title: Azure Voice Settings properties: type: type: string enum: - azure description: Voice settings provider type api_key_ref: description: The `identifier` for an integration secret that refers to your Azure Speech API key. type: string example: my_azure_api_key region: description: The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key. type: string example: eastus deployment_id: description: The deployment ID for a custom Azure neural voice. type: string example: my-custom-voice-deployment effect: description: Audio effect to apply. type: string enum: - eq_car - eq_telecomhp8k gender: description: Voice gender filter. type: string enum: - Male - Female required: - type BackgroundTaskStatus: type: string enum: - queued - processing - success - failure - partial_success title: BackgroundTaskStatus description: Status of an embeddings task. BackgroundTasksQueryResponse: properties: user_id: type: string title: User Id task_id: type: string title: Task Id task_name: type: string title: Task Name status: $ref: '#/components/schemas/BackgroundTaskStatus' created_at: type: string format: date-time title: Created At finished_at: type: string format: date-time title: Finished At bucket: type: string title: Bucket type: object required: - user_id - task_id - task_name - status - created_at title: BackgroundTasksQueryResponse BackgroundTasksQueryResponseData: properties: data: items: $ref: '#/components/schemas/BackgroundTasksQueryResponse' type: array title: Data type: object required: - data title: BackgroundTasksQueryResponseData Base64AudioResponse: type: object description: Response when `output_type` is `base64_output`. properties: base64_audio: type: string description: Base64-encoded audio data. BillingAddress: $ref: '#/components/schemas/PhysicalAddress' BillingBundleResponse: title: BillingBundleResponse required: - data type: object properties: data: $ref: '#/components/schemas/BillingBundleSchema' BillingBundleSchema: title: BillingBundleSchema required: - id - name - cost_code - active - is_public - created_at - bundle_limits type: object properties: id: title: Id type: string format: uuid example: 7ecd040e-6bac-4139-9160-3c0427d98fea description: Bundle's ID, this is used to identify the bundle in the API. name: title: Name type: string example: Australia Basic description: Bundle's name, this is used to identify the bundle in the UI. slug: title: Slug type: string example: basic-au-e4f8 description: Slugified version of the bundle's name. cost_code: title: Cost Code type: string example: BUNDLE-PRICING-BASIC-MRC description: Bundle's cost code, this is used to identify the bundle in the billing system. active: title: Active type: boolean description: If that bundle is active or not. is_public: title: Is Public type: boolean description: Available to all customers or only to specific customers. created_at: title: Created At type: string format: date description: Date the bundle was created. bundle_limits: title: Bundle Limits type: array items: $ref: '#/components/schemas/BundleLimitSchema' BillingBundleSummary: title: BillingBundleSummary required: - id - name - cost_code - is_public - created_at type: object properties: id: title: Id type: string format: uuid example: 7ecd040e-6bac-4139-9160-3c0427d98fea description: Bundle's ID, this is used to identify the bundle in the API. name: title: Name type: string example: Australia Basic description: Bundle's name, this is used to identify the bundle in the UI. slug: title: Slug type: string example: basic-au-e4f8 description: Slugified version of the bundle's name. cost_code: title: Cost Code type: string example: BUNDLE-PRICING-BASIC-MRC description: Bundle's cost code, this is used to identify the bundle in the billing system. is_public: title: Is Public type: boolean description: Available to all customers or only to specific customers. created_at: title: Created At type: string format: date description: Date the bundle was created. mrc_price: title: Mrc Price type: number format: float example: 2.0 description: Monthly recurring charge price. currency: title: Currency type: string example: USD description: Bundle's currency code. specs: title: Specs type: array items: type: string example: - 1 AU Number - Emergency Calling - All inbound and outbound calling billed pay-as-you-go BillingCategory: type: string enum: - NON_CONVERSATIONAL - CONVERSATIONAL BillingContact: type: object required: - first_name - last_name - email - phone_number properties: first_name: type: string maxLength: 255 description: The first name of the person Telnyx should contact about billing for this account. example: Alex last_name: type: string maxLength: 255 description: The last name of the person Telnyx should contact about billing for this account. example: Bill email: type: string format: email description: The email address of the person Telnyx should contact about billing for this account. example: billing@acmeplumbing.example.com phone_number: type: string description: The phone number of the billing contact, in E.164 format, for example +12125551234. example: '+13125550001' BillingGroup: type: object properties: record_type: type: string enum: - billing_group description: Identifies the type of the resource. example: billing_group id: type: string format: uuid description: Identifies the type of resource. example: f5586561-8ff0-4291-a0ac-84fe544797bd organization_id: type: string format: uuid description: Identifies the organization that owns the resource. example: f1486bae-f067-460c-ad43-73a92848f902 name: type: string description: A user-specified name for the billing group example: My billing group name created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2019-10-15T10:07:15.527Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2019-10-15T10:07:15.527Z' deleted_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the resource was removed. example: null example: record_type: billing_group id: f5586561-8ff0-4291-a0ac-84fe544797bd organization_id: f1486bae-f067-460c-ad43-73a92848f902 name: My billing group name created_at: '2019-10-15T10:07:15.527Z' updated_at: '2019-10-15T10:07:15.527Z' deleted_at: null BlackBoxTestResult: type: object properties: record_type: type: string example: black_box_test id: type: string description: The name of the black box test. example: msg_overview_outbound_sms result: type: number description: The average result of the black box test over the last hour. example: 0.999 BlackBoxTestResultSet: type: object properties: record_type: type: string example: black_box_test_result product: type: string example: cloud_storage description: The product associated with the black box test group. black_box_tests: type: array items: $ref: '#/components/schemas/BlackBoxTestResult' BlocksErrorObject: type: object required: - code - title - detail properties: code: type: string description: 'Error codes: `10001` (Not Found), `10007` (Unauthorized), `10015` (Validation Failed), `10019` (Internal — import create fallback), `40901` (Conflict), `500` (framework/catch-all). ' title: type: string detail: type: string source: type: object properties: pointer: type: string description: '`/data/attributes/` for changeset/Params; `/` for query-param errors.' BookAppointmentTool: properties: type: type: string enum: - book_appointment book_appointment: $ref: '#/components/schemas/BookAppointmentToolParams' type: object required: - type - book_appointment title: BookAppointmentTool BookAppointmentToolParams: properties: event_type_id: type: integer description: Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-event-type-id) api_key_ref: type: string description: Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your Cal.com API key. example: my_calcom_api_key attendee_name: type: string description: The name of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-name). If not provided, the assistant will ask for the attendee's name. attendee_timezone: type: string description: The timezone of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-timezone). If not provided, the assistant will ask for the attendee's timezone. type: object required: - event_type_id - api_key_ref title: BookAppointmentToolParams BooleanLiteralExpression: description: Constant boolean value. Useful for unconditional ('always') edges. example: type: bool_literal value: true properties: type: const: bool_literal title: Type type: string value: description: Literal boolean value. title: Value type: boolean required: - type - value title: BooleanLiteralExpression type: object BooleanOpExpression: description: 'Combine sub-expressions with a logical operator (`and` / `or` / `not`). `and` and `or` accept two or more operands; `not` accepts exactly one.' example: op: and operands: - name: is_premium type: variable - left: name: user_age type: variable op: '>=' right: type: number_literal value: 18 type: comparison type: bool_op properties: op: description: Logical operator. `not` is unary; `and`/`or` are n-ary (>=2). enum: - and - or - not title: Op type: string operands: description: Operand sub-expressions. Length must be exactly 1 for `not` and >= 2 for `and`/`or`. items: $ref: '#/components/schemas/Expression' title: Operands type: array type: const: bool_op title: Type type: string required: - type - op - operands title: BooleanOpExpression type: object BotChallengeRequest: type: object description: Optional self-reported metadata about the LLM solving the challenge. Analytics only; values are truncated to 50 characters. properties: llm_model_name: type: string description: Name of the LLM the client is using. example: claude-opus-4 llm_parameter_count: type: string description: Parameter count of the client LLM. example: 175B llm_quantization: type: string description: Quantization of the client LLM. example: int8 BotChallengeResponse: type: object required: - data properties: data: type: object required: - nonce - problem - challenge_type - terms_and_conditions_url - privacy_policy_url properties: nonce: type: string format: uuid description: Single-use challenge identifier. Submit it as `bot_challenge_nonce` on the signup request. example: c6feda4e-6501-4db9-a21f-665e5b4ce2ba problem: type: string description: Problem text to solve. Math problems are obfuscated and end with an unobfuscated rounding instruction; string and binary problems are returned as-is. example: W#hAt iS f!Ve tImEs sEvEn? Round to 0 decimal places. Omit units. challenge_type: type: string description: Type of challenge. enum: - math - string - binary example: math precision: type: integer description: Decimal places expected in the answer. Present only for math challenges. example: 0 terms_and_conditions_url: type: string description: Current terms-and-conditions URL. Echo this back on the signup request. example: https://telnyx.com/terms-and-conditions-of-service privacy_policy_url: type: string description: Current privacy-policy URL. Echo this back on the signup request. example: https://telnyx.com/privacy-policy BotSessionResponse: type: object required: - data properties: data: type: object required: - api_v2_token properties: api_v2_token: type: string description: API v2 session token for the signed-in user. Use it as a bearer token on authenticated endpoints. example: KEY0189A1B2C3D4E5F6071829AB3C4D5E_5FhZonmFvcw8Yq0dME27Bg BotSignupRequest: type: object properties: email: type: string format: email description: Email address for the new account. The magic link is sent here. May only be omitted when placeholder-email registration is enabled server-side. example: agent-owner@example.com terms_of_service: type: boolean enum: - true description: Must be true to accept the terms of service. example: true terms_and_conditions_url: type: string description: Must exactly match the terms-and-conditions URL returned by the challenge endpoint. example: https://telnyx.com/terms-and-conditions-of-service privacy_policy_url: type: string description: Must exactly match the privacy-policy URL returned by the challenge endpoint. example: https://telnyx.com/privacy-policy terms_of_service_eu: type: boolean enum: - true description: EU terms-of-service acceptance. Required when EU consent enforcement is enabled. example: true terms_and_conditions_eu_url: type: string description: EU terms-and-conditions URL. Required when EU consent enforcement is enabled. example: https://telnyx.com/terms-and-conditions-of-service-eu bot_challenge_nonce: type: string format: uuid description: Nonce from a previously issued bot challenge. example: c6feda4e-6501-4db9-a21f-665e5b4ce2ba bot_challenge_answer: type: string description: Answer to the issued bot challenge. example: '35' required: - terms_of_service - terms_and_conditions_url - privacy_policy_url - bot_challenge_nonce - bot_challenge_answer BpoAuthorization: type: object description: A single authorization of a BPO (Business Process Outsourcer) account on a DIR. required: - record_type - bpo_enterprise_id - status - loa_document_id properties: record_type: type: string enum: - bpo_authorization description: Always `bpo_authorization`. example: bpo_authorization readOnly: true bpo_enterprise_id: type: string format: uuid description: The authorized BPO account's enterprise id. example: 4a6192a4-573d-446d-b3ce-aff9117272a6 status: type: string enum: - pending - approved - rejected description: Review state of this authorization. `pending` when the authorization is first added, or when you send a different `loa_document_id` for this BPO in `bpo_authorizations` (uploading a document alone changes nothing). Approving the DIR approves its pending authorizations; an admin can also approve or reject one on its own. Only an `approved` authorization adds the BPO to this DIR's authorized callers in the branded calling registry. example: pending loa_document_id: type: string format: uuid description: Id of the signed Letter of Authorization document submitted for this BPO. Send it back unchanged in `bpo_authorizations` when updating the DIR to keep this authorization and its review state. example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c rejection_reason: type: string nullable: true description: Why the authorization was rejected. `null` unless `status` is `rejected`. example: Letter of Authorization is unsigned BpoAuthorizationInput: type: object description: 'One authorization to include when creating or updating a DIR: an approved BPO (Business Process Outsourcer) account plus the signed Letter of Authorization the Brand Owner granted it.' required: - bpo_enterprise_id - loa_document_id properties: bpo_enterprise_id: type: string format: uuid description: Enterprise id of an approved BPO (Business Process Outsourcer) account on your organization to authorize for this DIR. example: 4a6192a4-573d-446d-b3ce-aff9117272a6 loa_document_id: type: string format: uuid description: Id of the signed Letter of Authorization document (uploaded via the Telnyx Documents API) in which the Brand Owner authorizes this BPO. example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c BpoAuthorizationList: type: object description: Paginated list of a DIR's BPO authorizations. required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/BpoAuthorization' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' BpoAuthorizationLoaRenderRequest: type: object required: - bpo_enterprise_id properties: bpo_enterprise_id: type: string format: uuid description: The approved BPO enterprise the Brand Owner is authorizing. Must be a BPO account on the caller's organization that has already been approved. example: 4a6192a4-573d-446d-b3ce-aff9117272a6 signature: allOf: - $ref: '#/components/schemas/SignaturePayload' description: Optional. When provided the rendered PDF embeds the signature image, printed name, and signed-at date. When absent the PDF is returned unsigned so the Brand Owner can sign externally and the BPO can upload it via the Documents API. BrandAddress: type: object additionalProperties: false properties: line_1: type: string minLength: 1 maxLength: 255 line_2: type: - string - 'null' minLength: 1 maxLength: 255 city: type: string minLength: 1 maxLength: 100 administrative_area: type: string minLength: 1 maxLength: 100 postal_code: type: string minLength: 1 maxLength: 32 country_code: type: string pattern: ^[A-Z]{2}$ description: The two-letter ISO 3166-1 country code. required: - line_1 - city - administrative_area - postal_code - country_code BrandBasic: title: ListedBrand type: object properties: brandId: type: string description: Unique identifier assigned to the brand. example: 4b206179-f731-8ab7-f19c-34e19d22ide9 tcrBrandId: type: string description: Unique identifier assigned to the brand by the registry. example: BBRAND1 entityType: $ref: '#/components/schemas/EntityType' identityStatus: $ref: '#/components/schemas/BrandIdentityStatus' companyName: type: string description: (Required for Non-profit/private/public) Legal company name. example: Example Company Inc. displayName: type: string description: Display or marketing name of the brand. example: Example Company email: type: string description: Valid email address of brand support contact. example: examplename@examplecompany.com website: type: string description: Brand website URL. example: www.examplecompany.com failureReasons: title: failureReasons description: Failure reasons for brand type: string status: title: status description: Status of the brand enum: - OK - REGISTRATION_PENDING - REGISTRATION_FAILED type: string createdAt: type: string description: Date and time that the brand was created at. example: '2021-03-08T17:57:48.801186' updatedAt: type: string description: Date and time that the brand was last updated at. example: '2021-03-08T17:57:48.801186' assignedCampaingsCount: type: integer description: Number of campaigns associated with the brand example: 2 BrandContact: type: object propertyNames: enum: - contact_type - first_name - last_name - title - email - phone_number properties: contact_type: $ref: '#/components/schemas/BrandContactType' first_name: type: string minLength: 1 maxLength: 100 last_name: type: string minLength: 1 maxLength: 100 title: type: - string - 'null' minLength: 1 maxLength: 100 email: type: string minLength: 3 maxLength: 254 format: email pattern: ^[^@\s]+@[^@\s]+\.[^@\s]+$ phone_number: type: string maxLength: 16 pattern: ^\+[1-9][0-9]{1,14}$ required: - contact_type - first_name - last_name - email - phone_number BrandContactType: type: string enum: - BRAND - PRIMARY - OFFICER - AGENT - RESPONSIBLE_PARTY - BILLING - UNKNOWN BrandContacts: type: object minProperties: 1 properties: brand: allOf: - $ref: '#/components/schemas/BrandContact' - properties: contact_type: const: BRAND additionalProperties: $ref: '#/components/schemas/BrandContact' required: - brand description: Named business contacts. Use the `brand` key for the required BRAND contact. BrandCreateRequest: type: object additionalProperties: false properties: display_name: type: string minLength: 1 maxLength: 100 legal_name: type: string minLength: 1 maxLength: 100 legal_entity_type: $ref: '#/components/schemas/BrandLegalEntityType' organization_type: $ref: '#/components/schemas/BrandOrganizationType' website_url: $ref: '#/components/schemas/HttpUrl' profile_id: type: - string - 'null' maxLength: 36 description: A Messaging Profile owned by the authenticated organization. Agents inherit this value when they do not provide their own profile. identifiers: $ref: '#/components/schemas/BrandIdentifiers' addresses: type: object minProperties: 1 additionalProperties: $ref: '#/components/schemas/BrandAddress' contacts: $ref: '#/components/schemas/BrandContacts' required: - display_name - legal_name - legal_entity_type - organization_type - website_url - identifiers - addresses - contacts allOf: - if: properties: organization_type: const: PUBLIC_PROFIT required: - organization_type then: properties: identifiers: properties: stock_symbol: $ref: '#/components/schemas/BrandIdentifier' required: - stock_symbol example: display_name: Acme legal_name: Acme LLC legal_entity_type: LIMITED_LIABILITY_COMPANY organization_type: PRIVATE_PROFIT website_url: https://www.example.com profile_id: 40000000-0000-0000-0000-000000000001 identifiers: ein: identifier_type: EIN value: 12-3456789 addresses: primary: line_1: 1 Main Street city: Chicago administrative_area: IL postal_code: '60601' country_code: US contacts: brand: contact_type: BRAND first_name: Jane last_name: Doe title: Messaging Operations Manager email: jane@example.com phone_number: '+13125550100' BrandFeedback: title: BrandFeedback required: - brandId - category type: object properties: brandId: title: Brandid type: string description: ID of the brand being queried about example: d88dd2aa-1bb9-4ef0-9ec8-1752b80316a5 category: title: Category type: array items: $ref: '#/components/schemas/BrandFeedbackCategory' description: A list of reasons why brand creation/revetting didn't go as planned BrandFeedbackCategory: title: BrandFeedbackCategory required: - id - displayName - description - fields type: object properties: id: title: Id type: string description: One of `TAX_ID`, `STOCK_SYMBOL`, `GOVERNMENT_ENTITY`, `NONPROFIT`, and `OTHERS` example: TAX_ID displayName: title: Displayname type: string description: Human-readable version of the `id` field example: Tax Id description: title: Description type: string description: Long-form description of the feedback with additional information example: Tax Id does not match with the company name or business type. fields: title: Fields type: array items: type: string description: List of relevant fields in the originally-submitted brand json example: - ein - companyName - entityType BrandIdentifier: oneOf: - $ref: '#/components/schemas/EinBrandIdentifier' - $ref: '#/components/schemas/StockSymbolBrandIdentifier' BrandIdentifiers: type: object minProperties: 1 properties: ein: $ref: '#/components/schemas/EinBrandIdentifier' stock_symbol: $ref: '#/components/schemas/StockSymbolBrandIdentifier' additionalProperties: $ref: '#/components/schemas/BrandIdentifier' required: - ein description: Named business identifiers. Use the `ein` key for the required EIN and `stock_symbol` for a public-profit brand's stock symbol. BrandIdentityStatus: title: BrandIdentityStatus enum: - VERIFIED - UNVERIFIED - SELF_DECLARED - VETTED_VERIFIED description: The verification status of an active brand type: string BrandLegalEntityType: type: string enum: - LIMITED_LIABILITY_COMPANY - SOLE_PROPRIETORSHIP - PARTNERSHIP - CORPORATION - S_CORPORATION BrandLoaRenderRequest: type: object required: - phone_numbers properties: phone_numbers: type: array minItems: 1 maxItems: 15 description: Telephone numbers to authorize on the DIR, in `+E164` format (`+` followed by 10-15 digits). Max 15 per request. items: type: string pattern: ^\+[1-9][0-9]{9,14}$ example: '+13125550000' agent: allOf: - $ref: '#/components/schemas/AgentInput' description: Optional. The third-party reseller / partner managing the enterprise's phone numbers on its behalf; omitted, the LOA marks the Authorized Agent block as N/A. A call center (BPO) adding numbers to a client's DIR puts its own details here. The letter is signed by the DIR enterprise's organization contact (the client, in the BPO case), not by the agent. signature: allOf: - $ref: '#/components/schemas/SignaturePayload' description: Optional. When provided the rendered PDF embeds the signature image, printed name, and signed-at date. When absent the PDF is returned unsigned so the customer can sign externally and upload it via the Documents API. BrandOptionalAttributes: title: BrandOptionalAttributes type: object properties: taxExemptStatus: title: Taxexemptstatus type: string description: The tax exempt status of the brand BrandOrganizationType: type: string enum: - PRIVATE_PROFIT - PUBLIC_PROFIT - NON_PROFIT - GOVERNMENT - UNKNOWN BrandRecordSetCSP: title: BrandRecordSetCSP type: object properties: records: title: Records type: array items: $ref: '#/components/schemas/BrandBasic' page: title: Page type: integer example: 1 totalRecords: title: Totalrecords type: integer example: 1 BrandRelationship: title: BrandRelationship enum: - BASIC_ACCOUNT - SMALL_ACCOUNT - MEDIUM_ACCOUNT - LARGE_ACCOUNT - KEY_ACCOUNT description: Brand relationship to the CSP. type: string BrandResponse: type: object additionalProperties: false properties: brand_id: type: string format: uuid display_name: type: string legal_name: type: string legal_entity_type: type: string organization_type: type: string website_url: $ref: '#/components/schemas/HttpUrl' status: $ref: '#/components/schemas/BrandState' profile_id: type: - string - 'null' identifiers: type: object additionalProperties: $ref: '#/components/schemas/BrandIdentifier' addresses: type: object additionalProperties: $ref: '#/components/schemas/BrandAddress' contacts: type: object additionalProperties: $ref: '#/components/schemas/BrandContact' capabilities: $ref: '#/components/schemas/CapabilitiesResponse' required: - brand_id - display_name - legal_name - legal_entity_type - organization_type - website_url - status - profile_id - identifiers - addresses - contacts - capabilities example: brand_id: 11111111-1111-4111-8111-111111111111 display_name: Acme legal_name: Acme LLC legal_entity_type: LIMITED_LIABILITY_COMPANY organization_type: PRIVATE_PROFIT website_url: https://www.example.com status: CREATED profile_id: 40000000-0000-0000-0000-000000000001 identifiers: ein: identifier_type: EIN value: 12-3456789 addresses: primary: line_1: 1 Main Street city: Chicago administrative_area: IL postal_code: '60601' country_code: US contacts: brand: contact_type: BRAND first_name: Jane last_name: Doe title: Messaging Operations Manager email: jane@example.com phone_number: '+13125550100' capabilities: brand_entity: true brand_verification: true submission_sections: true distinct_launch_phase: false per_carrier_approval: false templates: false campaigns: false vendor_webhooks: false invite_test_devices: false BrandSmsOtpStatus: title: BrandSmsOtpStatus required: - brandId - referenceId - mobilePhone - requestDate - deliveryStatus type: object properties: brandId: title: Brandid type: string description: The Brand ID associated with this OTP request example: B123ABC referenceId: title: Referenceid type: string description: The reference ID for this OTP request, used for status queries example: OTP4B2001 mobilePhone: title: Mobilephone type: string description: The mobile phone number where the OTP was sent, in E.164 format example: '+11234567890' requestDate: title: Requestdate type: string format: date-time description: The timestamp when the OTP request was initiated example: '2024-12-03T17:12:33.560000+00:00' verifyDate: title: Verifydate type: string format: date-time description: The timestamp when the OTP was successfully verified (if applicable) example: '2024-12-03T17:12:33.560000+00:00' deliveryStatus: title: Deliverystatus type: string description: 'The current delivery status of the OTP SMS message. Common values include: `DELIVERED_HANDSET`, `PENDING`, `FAILED`, `EXPIRED`' example: DELIVERED_HANDSET deliveryStatusDate: title: Deliverystatusdate type: string format: date-time description: The timestamp when the delivery status was last updated example: '2024-12-03T17:12:33.560000+00:00' deliveryStatusDetails: title: Deliverystatusdetails type: string description: Additional details about the delivery status example: Delivered to handset description: Status information for an SMS OTP sent during Sole Proprietor brand verification BrandState: type: string enum: - CREATED - CONFIGURED - SUBMITTED - REVIEWING - VETTING - VERIFIED - REJECTED - FAILED BrandUpdateRequest: type: object additionalProperties: false minProperties: 1 properties: display_name: type: string minLength: 1 maxLength: 100 legal_name: type: string minLength: 1 maxLength: 100 legal_entity_type: $ref: '#/components/schemas/BrandLegalEntityType' organization_type: $ref: '#/components/schemas/BrandOrganizationType' website_url: $ref: '#/components/schemas/HttpUrl' profile_id: type: string maxLength: 36 identifiers: $ref: '#/components/schemas/BrandIdentifiers' addresses: type: object minProperties: 1 additionalProperties: $ref: '#/components/schemas/BrandAddress' contacts: $ref: '#/components/schemas/BrandContacts' example: display_name: Acme Communications BreakdownData: type: object properties: user_id: type: string description: User identifier example: 0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8 start_date: type: string format: date description: Start date of the breakdown period example: '2025-05-01' end_date: type: string format: date description: End date of the breakdown period example: '2025-06-01' user_email: type: string format: email description: User email address example: user@example.com currency: type: string description: Currency code example: USD results: type: array items: $ref: '#/components/schemas/NumberBreakdownResult' description: List of phone number charge breakdowns required: - user_id - start_date - end_date - user_email - currency - results BridgeRequest: type: object title: Bridge Request required: - call_control_id properties: call_control_id: description: The Call Control ID of the call you want to bridge with, can't be used together with queue parameter or video_room_id parameter. type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 queue: description: The name of the queue you want to bridge with, can't be used together with call_control_id parameter or video_room_id parameter. Bridging with a queue means bridging with the first call in the queue. The call will always be removed from the queue regardless of whether bridging succeeds. Returns an error when the queue is empty. type: string example: support video_room_id: description: The ID of the video room you want to bridge with, can't be used together with call_control_id parameter or queue parameter. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 video_room_context: description: The additional parameter that will be passed to the video conference. It is a text field and the user can decide how to use it. For example, you can set the participant name or pass JSON text. It can be used only with video_room_id parameter. type: string example: Alice prevent_double_bridge: description: When set to `true`, it prevents bridging if the target call is already bridged to another call. Disabled by default. type: boolean default: false example: true park_after_unbridge: description: Specifies behavior after the bridge ends (i.e. the opposite leg either hangs up or is transferred). If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default behavior is to hang up the leg. type: string example: self play_ringtone: description: Specifies whether to play a ringtone if the call you want to bridge with has not yet been answered. type: boolean default: false example: true ringtone: description: Specifies which country ringtone to play when `play_ringtone` is set to `true`. If not set, the US ringtone will be played. type: string default: us example: pl enum: - at - au - be - bg - br - ch - cl - cn - cz - de - dk - ee - es - fi - fr - gr - hu - il - in - it - jp - lt - mx - my - nl - 'no' - nz - ph - pl - pt - ru - se - sg - th - tw - uk - us-old - us - ve - za record: description: Start recording automatically after an event. Disabled by default. type: string enum: - record-from-answer example: record-from-answer record_channels: description: Defines which channel should be recorded ('single' or 'dual') when `record` is specified. type: string enum: - single - dual default: dual example: single record_format: description: Defines the format of the recording ('wav' or 'mp3') when `record` is specified. type: string enum: - wav - mp3 default: mp3 example: wav record_max_length: description: Defines the maximum length for the recording in seconds when `record` is specified. The minimum value is 0. The maximum value is 43200. The default value is 0 (infinite). type: integer format: int32 default: 0 example: 1000 record_timeout_secs: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite). type: integer format: int32 default: 0 example: 100 record_track: description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single channel). type: string example: outbound default: both enum: - both - inbound - outbound record_trim: description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording. enum: - trim-silence type: string example: trim-silence record_custom_file_name: description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix. type: string minLength: 1 maxLength: 40 example: my_recording_file_name mute_dtmf: description: When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information will be sent. type: string enum: - none - both - self - opposite default: none example: opposite hold_after_unbridge: description: Specifies behavior after the bridge ends. If set to `true`, the current leg will be put on hold after unbridge instead of being hung up. type: boolean example: true example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 park_after_unbridge: self Bucket: description: Name of the bucket to be used to store recording files. type: string example: example-bucket BucketAPIUsageResponse: type: object properties: categories: type: array items: $ref: '#/components/schemas/BucketOps' total: $ref: '#/components/schemas/BucketOpsTotal' timestamp: type: string format: date-time description: The time the usage was recorded example: '2020-01-01T00:00:00Z' BucketIds: properties: bucket_ids: items: type: string type: array description: List of [embedded storage buckets](https://developers.telnyx.com/api-reference/embeddings/embed-documents) to use for retrieval-augmented generation. max_num_results: description: The maximum number of results to retrieve as context for the language model. type: integer type: object required: - bucket_ids title: BucketIds BucketNotFoundError: properties: detail: items: $ref: '#/components/schemas/NotFoundError' type: array title: Detail type: object title: HTTPValidationError BucketOps: type: object properties: bytes_sent: type: integer description: The number of bytes sent example: 123456 bytes_received: type: integer description: The number of bytes received example: 123456 ops: type: integer description: The number of operations example: 123456 successful_ops: type: integer description: The number of successful operations example: 123456 category: type: string enum: - list_bucket - list_buckets - get-bucket_location - create_bucket - stat_bucket - get_bucket_versioning - set_bucket_versioning - get_obj - put_obj - delete_obj description: The category of the bucket operation example: put_obj BucketOpsTotal: type: object properties: bytes_sent: type: integer description: The number of bytes sent example: 123456 bytes_received: type: integer description: The number of bytes received example: 123456 ops: type: integer description: The number of operations example: 123456 successful_ops: type: integer description: The number of successful operations example: 123456 BucketUsage: type: object properties: size: type: integer description: The size of the bucket in bytes example: 123456 size_kb: type: integer description: The size of the bucket in kilobytes example: 123456 num_objects: type: integer description: The number of objects in the bucket example: 123456 timestamp: type: string format: date-time description: The time the snapshot was taken example: '2020-01-01T00:00:00Z' BudgetDuration: type: - string - 'null' enum: - 1d - 7d - 30d - null BulkAddPhoneNumbersRequest: type: object required: - phone_numbers - documents additionalProperties: false properties: phone_numbers: type: array items: type: string example: '+19493253498' minItems: 1 maxItems: 15 description: 1–15 phone numbers in E.164 format. 10-digit US numbers are auto-prefixed with `1`. documents: type: array items: $ref: '#/components/schemas/Document' minItems: 1 maxItems: 20 description: 'Supporting documents covering this batch. At least one entry with `document_type: letter_of_authorization` is required - the LOA authorises Telnyx to register these numbers under the DIR. Each `document_id` must come from the Telnyx Documents API. Additional document types (e.g. business registration) may be included alongside the LOA.' BulkDeletePhoneNumbersRequest: type: object required: - phone_numbers additionalProperties: false properties: phone_numbers: type: array items: type: string example: '+19493253498' minItems: 1 maxItems: 100 description: The phone numbers to remove from this brand, in E.164 format, up to 100 per request. They must currently be attached to this brand. BulkMessagingSettingsUpdatePhoneNumbers: type: object properties: record_type: type: string example: messaging_numbers_bulk_update enum: - messaging_numbers_bulk_update description: Identifies the type of the resource. readOnly: true order_id: type: string format: uuid description: Order ID to verify bulk update status. readOnly: true success: type: array items: type: string x-format: +E.164 description: Phoned numbers updated successfully. pending: type: array items: type: string x-format: +E.164 description: Phone numbers pending to be updated. failed: type: array items: type: string x-format: +E.164 description: Phone numbers that failed to update. example: record_type: messaging_numbers_bulk_update order_id: 00000000-0000-0000-0000-000000000000 success: - '+18880000000' - '+18880000001' - '+18880000002' pending: [] failed: [] BulkMessagingSettingsUpdatePhoneNumbersRequest: type: object required: - messaging_profile_id - numbers properties: messaging_profile_id: type: string description: 'Configure the messaging profile these phone numbers are assigned to: * Set this field to `""` to unassign each number from their respective messaging profile * Set this field to a quoted UUID of a messaging profile to assign these numbers to that messaging profile' numbers: type: array items: type: string x-format: +E.164 description: The list of phone numbers to update. assign_only: type: boolean description: If true, only assign numbers to the profile without changing other settings. default: false example: messaging_profile_id: 00000000-0000-0000-0000-000000000000 numbers: - '+18880000000' - '+18880000001' - '+18880000002' BulkSIMCardAction: type: object description: This object represents a bulk SIM card action. It groups SIM card actions created through a bulk endpoint under a single resource for further lookup. properties: id: $ref: '#/components/schemas/wireless_Id_c5290d5308' record_type: type: string example: bulk_sim_card_action readOnly: true action_type: type: string description: 'The action type. It can be one of the following:
  • bulk_disable_voice - disable voice for every SIM Card in a SIM Card Group.
  • bulk_enable_voice - enable voice for every SIM Card in a SIM Card Group.
  • bulk_set_public_ips - set a public IP for each specified SIM Card.
' enum: - bulk_disable_voice - bulk_enable_voice - bulk_set_public_ips readOnly: true example: bulk_set_public_ips settings: type: object description: A JSON object representation of the bulk action payload. example: {} readOnly: true additionalProperties: true created_at: $ref: '#/components/schemas/wireless_CreatedAt_c5290d5308' updated_at: $ref: '#/components/schemas/wireless_UpdatedAt_c5290d5308' BulkSIMCardActionDetailed: type: object properties: id: $ref: '#/components/schemas/wireless_Id_c5290d5308' record_type: type: string example: bulk_sim_card_action readOnly: true action_type: type: string description: 'The action type. It can be one of the following:
  • bulk_disable_voice - disable voice for every SIM Card in a SIM Card Group.
  • bulk_enable_voice - enable voice for every SIM Card in a SIM Card Group.
  • bulk_set_public_ips - set a public IP for each specified SIM Card.
' enum: - bulk_disable_voice - bulk_enable_voice - bulk_set_public_ips readOnly: true example: bulk_set_public_ips settings: type: object description: A JSON object representation of the bulk action payload. example: {} readOnly: true additionalProperties: true sim_card_actions_summary: type: array items: $ref: '#/components/schemas/SIMCardActionsSummary' created_at: $ref: '#/components/schemas/wireless_CreatedAt_c5290d5308' updated_at: $ref: '#/components/schemas/wireless_UpdatedAt_c5290d5308' BundleLimitDirection: title: BundleLimitDirection enum: - inbound - outbound type: string description: An enumeration. BundleLimitSchema: title: BundleLimitSchema required: - id - service - metric - created_at - updated_at type: object properties: id: title: Id type: string format: uuid example: e6a32ea9-953b-4622-bbba-9f7bcf7e6717 service: title: Service type: string example: E911 metric: title: Metric type: string example: number limit: title: Limit type: integer example: 1 rate: title: Rate type: string example: '5' country_iso: title: Country Iso type: string example: AU country_code: title: Country Code type: integer example: 61 country: title: Country type: string description: Use country_iso instead deprecated: true direction: $ref: '#/components/schemas/BundleLimitDirection' types: title: Types type: array items: type: string example: local created_at: title: Created At type: string format: date updated_at: title: Updated At type: string format: date billing_service: title: Billing Service type: string example: emergency Call: type: object title: Call required: - call_control_id - call_leg_id - call_session_id - is_alive - record_type example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768 call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d is_alive: false call_duration: 50 start_time: '2019-01-23T18:10:02.574Z' end_time: '2019-01-23T18:11:52.574Z' record_type: call properties: record_type: type: string enum: - call example: call call_session_id: description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call type: string example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1 call_leg_id: description: ID that is unique to the call and can be used to correlate webhook events type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_control_id: description: Unique identifier and token for controlling the call. type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg is_alive: description: Indicates whether the call is alive or not. For Dial command it will always be `false` (dialing is asynchronous). type: boolean example: true client_state: description: State received from a command. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d call_duration: description: Indicates the duration of the call in seconds type: integer example: 50 start_time: description: ISO 8601 formatted date indicating when the call started type: string example: '2019-01-23T18:10:02.574Z' end_time: description: ISO 8601 formatted date indicating when the call ended. Only present when the call is not alive type: string example: '2019-01-23T18:11:52.574Z' CallAIGatherEnded: type: object title: Call AI Gather Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.ai_gather.ended enum: - call.ai_gather.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Telnyx connection ID used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. message_history: description: The history of the messages exchanged during the AI gather type: array items: type: object properties: content: type: string example: Hello, I'm 29 and I live in Paris. description: The content of the message role: type: string enum: - assistant - user example: user description: The role of the message sender result: type: object description: The result of the AI gather, its type depends of the `parameters` provided in the command example: age: 29 city: Paris status: type: string enum: - valid - invalid example: valid description: Reflects how command ended. example: record_type: event event_type: call.ai_gather.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' status: valid message_history: - content: Hello, can you tell me your age and where you live? role: assistant - content: Hello, I'm 29 and I live in Paris? role: user result: age: 29 city: Paris CallAIGatherEndedEvent: type: object title: Call AI Gather Ended Event properties: data: $ref: '#/components/schemas/CallAIGatherEnded' CallAIGatherMessageHistoryUpdated: type: object title: Call AI Gather Message History Updated properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.ai_gather.message_history_updated enum: - call.ai_gather.message_history_updated description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Telnyx connection ID used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. message_history: description: The history of the messages exchanged during the AI gather type: array items: type: object properties: content: type: string example: Hello, I'm 29 and I live in Paris. description: The content of the message role: type: string enum: - assistant - user example: user description: The role of the message sender example: record_type: event event_type: call.ai_gather.message_history_updated id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' message_history: - content: Hello, can you tell me your age and where you live? role: assistant - content: Hello, I'm 29 and I live in Paris? role: user CallAIGatherMessageHistoryUpdatedEvent: type: object title: Call AI Gather Message History Updated Event properties: data: $ref: '#/components/schemas/CallAIGatherMessageHistoryUpdated' CallAIGatherPartialResults: type: object title: Call AI Gather Partial Results properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.ai_gather.partial_results enum: - call.ai_gather.partial_results description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Telnyx connection ID used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. message_history: description: The history of the messages exchanged during the AI gather type: array items: type: object properties: content: type: string example: Hello, I'm 29 and I live in Paris. description: The content of the message role: type: string enum: - assistant - user example: user description: The role of the message sender partial_results: type: object description: The partial result of the AI gather, its type depends of the `parameters` provided in the command example: age: 29 city: Paris example: record_type: event event_type: call.ai_gather.partial_results id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' message_history: - content: Hello, can you tell me your age and where you live? role: assistant - content: Hello, I'm 29 and I live in Paris? role: user partial_results: age: 29 city: Paris CallAIGatherPartialResultsEvent: type: object title: Call AI Gather Partial Results Event properties: data: $ref: '#/components/schemas/CallAIGatherPartialResults' CallAnswered: type: object title: Call Answered properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.answered enum: - call.answered description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. custom_headers: description: Custom headers set on answer command type: array example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' sip_headers: description: User-to-User and Diversion headers from sip invite. type: array example: - name: User-to-User value: '1234' - name: Diversion value: items: $ref: '#/components/schemas/InboundSipHeader' from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. start_time: type: string format: date-time example: '2018-02-02T22:20:27.521992Z' description: ISO 8601 datetime of when the call started. state: type: string example: answered enum: - answered description: State received from a command. tags: description: Array of tags associated to number. example: - tag-01 - tag-02 type: array items: type: string example: record_type: event event_type: call.answered id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' start_time: '2018-02-02T22:25:27.521992Z' state: answered CallAnsweredEvent: type: object title: Call Answered Event properties: data: $ref: '#/components/schemas/CallAnswered' CallAssistantRequest: type: object description: AI Assistant configuration and per-call overrides. All fields except `id` are optional. Omitted assistant fields use the stored configuration. Supplied `voice_settings` and `transcription` objects replace their stored objects rather than merging individual settings; include every setting you want to retain. `dynamic_variables` are merged, with request values taking precedence. required: - id properties: id: type: string description: The identifier of the AI assistant to use. model: type: string description: LLM model override for this call. If omitted, the assistant's configured model is used. example: gpt-4o name: type: string description: Assistant name override for this call. instructions: type: string description: System instructions for the voice assistant. Can be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). This will overwrite the instructions set in the assistant configuration. example: You are a friendly voice assistant. greeting: type: string maxLength: 3000 description: Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character limit. voice_settings: $ref: '#/components/schemas/VoiceSettings' description: Per-call voice configuration. Set the voice identifier in `voice_settings.voice`, not in `assistant.voice`. If supplied, this object replaces the stored voice settings. transcription: $ref: '#/components/schemas/TranscriptionConfig' description: Per-call speech-to-text configuration for the assistant. If omitted, the stored assistant transcription configuration is used. If supplied, this object replaces the stored transcription settings. This is separate from the top-level `transcription` boolean on answer and dial commands. tools: type: array description: Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided. items: oneOf: - $ref: '#/components/schemas/BookAppointmentTool' - $ref: '#/components/schemas/CheckAvailabilityTool' - $ref: '#/components/schemas/WebhookTool' - $ref: '#/components/schemas/HangupTool' - $ref: '#/components/schemas/TransferTool' - $ref: '#/components/schemas/CallControlRetrievalTool' discriminator: propertyName: type mapping: book_appointment: '#/components/schemas/BookAppointmentTool' check_availability: '#/components/schemas/CheckAvailabilityTool' webhook: '#/components/schemas/WebhookTool' hangup: '#/components/schemas/HangupTool' transfer: '#/components/schemas/TransferTool' retrieval: '#/components/schemas/CallControlRetrievalTool' llm_api_key_ref: type: string description: Integration secret identifier for the LLM provider API key. Use this field to reference an [integration secret](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) containing your LLM provider API key. Supports any LLM provider (OpenAI, Anthropic, etc.). example: my_llm_api_key openai_api_key_ref: type: string description: Deprecated — use `llm_api_key_ref` instead. Integration secret identifier for the OpenAI API key. This field is maintained for backward compatibility; `llm_api_key_ref` is the canonical field name and supports all LLM providers. deprecated: true x-sdk-deprecation-message: Use llm_api_key_ref instead example: my_openai_api_key dynamic_variables: type: object description: Map of dynamic variables and their default values. Dynamic variables can be referenced in instructions, greeting, and tool definitions using the `{{variable_name}}` syntax. Call-control-agent automatically merges in `telnyx_call_*` variables (telnyx_call_to, telnyx_call_from, telnyx_conversation_channel, telnyx_agent_target, telnyx_end_user_target, telnyx_call_caller_id_name) and custom header variables. additionalProperties: oneOf: - type: string - type: number - type: boolean example: customer_name: John account_id: ACC-12345 fallback_config: type: object description: Fallback LLM configuration used when the primary LLM provider is unavailable. properties: model: type: string description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable. llm_api_key_ref: type: string description: Integration secret identifier for the fallback model API key. external_llm: type: object description: External LLM fallback configuration. properties: model: type: string description: Model identifier to use with the external LLM endpoint. base_url: type: string description: Base URL for the external LLM endpoint. llm_api_key_ref: type: string description: Integration secret identifier for the external LLM API key. authentication_method: type: string enum: - token - certificate default: token description: Authentication method used when connecting to the external LLM endpoint. certificate_ref: type: string description: Integration secret identifier for the client certificate used with certificate authentication. token_retrieval_url: type: string description: URL used to retrieve an access token when certificate authentication is enabled. forward_metadata: type: boolean default: false description: 'When enabled, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint. Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic variables are available. For example: `{"extra_metadata":{"customer_name":"Jane","account_id":"acct_789","telnyx_agent_target":"+13125550100","telnyx_end_user_target":"+13125550123"}}`.' external_llm: type: object description: External LLM configuration for bringing your own LLM endpoint. properties: model: type: string description: Model identifier to use with the external LLM endpoint. base_url: type: string description: Base URL for the external LLM endpoint. llm_api_key_ref: type: string description: Integration secret identifier for the external LLM API key. authentication_method: type: string enum: - token - certificate default: token description: Authentication method used when connecting to the external LLM endpoint. certificate_ref: type: string description: Integration secret identifier for the client certificate used with certificate authentication. token_retrieval_url: type: string description: URL used to retrieve an access token when certificate authentication is enabled. forward_metadata: type: boolean default: false description: 'When enabled, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint. Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic variables are available. For example: `{"extra_metadata":{"customer_name":"Jane","account_id":"acct_789","telnyx_agent_target":"+13125550100","telnyx_end_user_target":"+13125550123"}}`.' mcp_servers: type: array description: MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources. items: type: object properties: {} observability_settings: type: object description: Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring. properties: {} CallBridged: type: object title: Call Bridged properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.bridged enum: - call.bridged description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. example: record_type: event event_type: call.bridged id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' CallBridgedEvent: type: object title: Call Bridged Event properties: data: $ref: '#/components/schemas/CallBridged' CallControlApplication: type: object title: Call Control Application properties: active: type: boolean description: Specifies whether the connection can be used. default: true anchorsite_override: type: string description: 'Latency directs Telnyx to route media through the site with the lowest round-trip time to the user''s connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media. ' enum: - Latency - Chicago, IL - Ashburn, VA - San Jose, CA - London, UK - Chennai, IN - Amsterdam, Netherlands - Toronto, Canada - Sydney, Australia example: Amsterdam, Netherlands default: Latency application_name: type: string description: A user-assigned name to help manage the application. example: call-router created_at: type: string description: ISO 8601 formatted date of when the resource was created example: '2018-02-02T22:25:27.521Z' dtmf_type: type: string description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats. enum: - RFC 2833 - Inband - SIP INFO example: Inband default: RFC 2833 first_command_timeout: type: boolean description: Specifies whether calls to phone numbers associated with this connection should hangup after timing out. example: true default: false first_command_timeout_secs: type: integer description: Specifies how many seconds to wait before timing out a dial command. example: 10 default: 30 tags: type: array items: type: string description: Tags assigned to the Call Control Application. id: type: string example: '1293384261075731499' x-format: int64 inbound: $ref: '#/components/schemas/CallControlApplicationInbound' outbound: $ref: '#/components/schemas/CallControlApplicationOutbound' record_type: type: string enum: - call_control_application default: call_control_application updated_at: type: string description: ISO 8601 formatted date of when the resource was last updated example: '2018-02-02T22:25:27.521Z' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_event_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as `https`. example: https://failover.example.com default: '' webhook_event_url: type: string format: url description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as `https`. example: https://example.com webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this Call Control Application. default: false redact_dtmf_debug_logging: type: boolean description: When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions. example: true default: false example: active: false anchorsite_override: Latency application_name: call-router created_at: '2018-02-02T22:25:27.521Z' dtmf_type: Inband first_command_timeout: true first_command_timeout_secs: 10 id: '1293384261075731499' inbound: channel_limit: 10 shaken_stir_enabled: true sip_subdomain: example sip_subdomain_receive_settings: only_my_connections outbound: channel_limit: 10 outbound_voice_profile_id: '1293384261075731499' record_type: call_control_application updated_at: '2018-02-02T22:25:27.521Z' webhook_api_version: '1' webhook_event_failover_url: https://failover.example.com webhook_event_url: https://example.com webhook_timeout_secs: 25 call_cost_in_webhooks: false redact_dtmf_debug_logging: true CallControlApplicationInbound: type: object title: Call Control Application Inbound properties: channel_limit: type: integer description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. example: 10 default: null shaken_stir_enabled: type: boolean description: When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls. default: false example: false sip_subdomain: type: string description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric value. 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 — new values may appear as products evolve. rate: type: string example: '0.00180' description: The per-minute rate applied. cost: type: string example: '0.0018' description: The cost for this part of the call. currency: type: string example: USD description: The currency of the cost. billed_duration_secs: type: integer example: 180 description: The billed duration in seconds for this part of the call. CallDeepfakeDetectionError: type: object title: Call Deepfake Detection Error properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.deepfake_detection.error enum: - call.deepfake_detection.error description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string format: uuid example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string format: uuid example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: - string - 'null' example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. error_message: type: string enum: - detection_timeout - rtp_timeout - dfd_connection_error - dfd_stream_error description: The error that occurred. 'detection_timeout' = no DFD response received, 'rtp_timeout' = no RTP audio received, 'dfd_connection_error'/'dfd_stream_error' = service connectivity issues. example: record_type: event event_type: call.deepfake_detection.error id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d error_message: detection_timeout CallDeepfakeDetectionErrorEvent: type: object title: Call Deepfake Detection Error Event properties: data: $ref: '#/components/schemas/CallDeepfakeDetectionError' CallDeepfakeDetectionResult: type: object title: Call Deepfake Detection Result properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.deepfake_detection.result enum: - call.deepfake_detection.result description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string format: uuid example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string format: uuid example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: - string - 'null' example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. result: type: string enum: - real - fake - silence_timeout description: Detection outcome. 'real' = human voice, 'fake' = AI-generated voice, 'silence_timeout' = no analyzable speech detected before timeout. score: type: - number - 'null' format: float description: Probability that the audio is AI-generated, from 0.0 (likely real) to 1.0 (likely deepfake). Based on the model's aggregated confidence across analyzed audio frames. Null for silence_timeout. consistency: type: - number - 'null' format: float minimum: 0 maximum: 100 description: Percentage (0-100) indicating how consistently the model classified the audio across frames. High consistency (>90%) means confident classification throughout; low consistency suggests mixed signals. Null for silence_timeout. example: record_type: event event_type: call.deepfake_detection.result id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d result: fake score: 0.87 consistency: 94.5 CallDeepfakeDetectionResultEvent: type: object title: Call Deepfake Detection Result Event properties: data: $ref: '#/components/schemas/CallDeepfakeDetectionResult' CallDtmfReceived: type: object title: Call DTMF Received properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.dtmf.received enum: - call.dtmf.received description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Identifies the type of resource. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. digit: type: string example: '#' description: The received DTMF digit or symbol. example: record_type: event event_type: call.dtmf.received id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' digit: '#' CallDtmfReceivedEvent: type: object title: Call DTMF Received Event properties: data: $ref: '#/components/schemas/CallDtmfReceived' CallEnqueued: type: object title: Call Enqueued properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.enqueued enum: - call.enqueued description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. queue: type: string example: support description: The name of the queue current_position: type: integer example: 7 description: Current position of the call in the queue. queue_avg_wait_time_secs: type: integer example: 60 description: Average time call spends in the queue in seconds. example: record_type: event event_type: call.enqueued id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d queue: support current_position: 5 CallEnqueuedEvent: type: object title: Call Enqueued Event properties: data: $ref: '#/components/schemas/CallEnqueued' CallEvent: type: object title: Call Event required: - record_type - call_leg_id - call_session_id - event_timestamp - name - type - metadata properties: record_type: type: string enum: - call_event example: call_event call_leg_id: type: string description: Uniquely identifies an individual call leg. example: 308fe500-5213-11e9-ace7-02420a0f0668 call_session_id: type: string description: Uniquely identifies the call control session. A session may include multiple call leg events. example: 308fec30-5213-11e9-9d3f-02420a0f0668 event_timestamp: type: string description: Event timestamp example: '2019-03-29T11:10:19.127783Z' name: type: string description: Event name example: call.hangup type: type: string description: Event type enum: - command - webhook example: webhook metadata: type: object description: Event metadata, which includes raw event, and extra information based on event type example: record_type: call_event call_leg_id: 308fe500-5213-11e9-ace7-02420a0f0668 call_session_id: 308fec30-5213-11e9-9d3f-02420a0f0668 event_timestamp: '2019-03-29T11:10:19.127783Z' name: call.hangup type: webhook metadata: {} CallForkStarted: type: object title: Call Fork Started properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.fork.started enum: - call.fork.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_control_id: type: string example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA description: Unique ID for controlling the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. stream_type: type: string example: decrypted enum: - decrypted description: Type of media streamed. It can be either 'raw' or 'decrypted'. example: record_type: event event_type: call.fork.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_type: decrypted CallForkStartedEvent: type: object title: Call Fork Started Event properties: data: $ref: '#/components/schemas/CallForkStarted' CallForkStopped: type: object title: Call Fork Stopped properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.fork.stopped enum: - call.fork.stopped description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_control_id: type: string example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA description: Unique ID for controlling the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. stream_type: type: string example: decrypted enum: - decrypted description: Type of media streamed. It can be either 'raw' or 'decrypted'. example: record_type: event event_type: call.fork.stopped id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_type: decrypted CallForkStoppedEvent: type: object title: Call Fork Stopped Event properties: data: $ref: '#/components/schemas/CallForkStopped' CallForwarding: description: The call forwarding settings for a phone number. type: object properties: call_forwarding_enabled: type: boolean default: true description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints. example: true forwards_to: type: string description: The phone number to which inbound calls to this number are forwarded. Inbound calls will not be forwarded if this field is left blank. If set, must be a +E.164-formatted phone number. forwarding_type: type: string description: Call forwarding type. 'forwards_to' must be set for this to have an effect. enum: - always - on-failure example: always example: call_forwarding_enabled: true forwards_to: '+13035559123' forwarding_type: always CallGatherEnded: type: object title: Call Gather Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.gather.ended enum: - call.gather.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. digits: type: string example: '5503' description: The received DTMF digit or symbol. status: type: string enum: - valid - invalid - call_hangup - cancelled - cancelled_amd - timeout example: valid description: Reflects how command ended. example: record_type: event event_type: call.gather.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' digits: '123' status: valid CallGatherEndedEvent: type: object title: Call Gather Ended Event properties: data: $ref: '#/components/schemas/CallGatherEnded' CallHangup: type: object title: Call Hangup properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.hangup enum: - call.hangup description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. custom_headers: description: Custom headers set on answer command type: array example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' sip_headers: description: User-to-User and Diversion headers from sip invite. type: array example: - name: User-to-User value: '1234' - name: Diversion value: items: $ref: '#/components/schemas/InboundSipHeader' from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. start_time: type: string format: date-time example: '2018-02-02T22:20:27.521992Z' description: ISO 8601 datetime of when the call started. state: type: string example: hangup enum: - hangup description: State received from a command. tags: description: Array of tags associated to number. example: - tag-01 - tag-02 type: array items: type: string hangup_cause: type: string example: call_rejected enum: - call_rejected - normal_clearing - originator_cancel - timeout - time_limit - user_busy - not_found - no_answer - unspecified description: The reason the call was ended (`call_rejected`, `normal_clearing`, `originator_cancel`, `timeout`, `time_limit`, `user_busy`, `not_found`, `no_answer` or `unspecified`). hangup_source: type: string example: caller enum: - caller - callee - unknown description: The party who ended the call (`callee`, `caller`, `unknown`). sip_hangup_cause: type: string example: '603' description: The reason the call was ended (SIP response code). If the SIP response is unavailable (in inbound calls for example) this is set to `unspecified`. call_quality_stats: type: - object - 'null' description: Call quality statistics aggregated from the CHANNEL_HANGUP_COMPLETE event. Only includes metrics that are available (filters out nil values). Returns nil if no metrics are available. example: inbound: jitter_max_variance: '2.74' jitter_packet_count: '0' mos: '4.50' packet_count: '591' skip_packet_count: '9' outbound: packet_count: '0' skip_packet_count: '0' properties: inbound: type: object description: Inbound call quality statistics. properties: jitter_max_variance: type: string description: Maximum jitter variance for inbound audio. example: '2.74' jitter_packet_count: type: string description: Number of packets used for jitter calculation on inbound audio. example: '0' mos: type: string description: Mean Opinion Score (MOS) for inbound audio quality. example: '4.50' packet_count: type: string description: Total number of inbound audio packets. example: '591' skip_packet_count: type: string description: Number of skipped inbound packets (packet loss). example: '9' outbound: type: object description: Outbound call quality statistics. properties: packet_count: type: string description: Total number of outbound audio packets. example: '0' skip_packet_count: type: string description: Number of skipped outbound packets (packet loss). example: '0' example: record_type: event event_type: call.hangup id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' start_time: '2018-02-02T22:20:27.521992Z' state: hangup hangup_cause: call_rejected hangup_source: caller sip_hangup_cause: '603' call_quality_stats: inbound: jitter_max_variance: '2.74' jitter_packet_count: '0' mos: '4.50' packet_count: '591' skip_packet_count: '9' outbound: packet_count: '0' skip_packet_count: '0' CallHangupEvent: type: object title: Call Hangup Event properties: data: $ref: '#/components/schemas/CallHangup' CallHold: type: object title: Call Hold properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.hold enum: - call.hold description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. example: record_type: event event_type: call.hold id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' CallHoldEvent: type: object title: Call Hold Event properties: data: $ref: '#/components/schemas/CallHold' CallInitiated: type: object title: Call Initiated properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.initiated enum: - call.initiated description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. connection_codecs: type: string example: G722,PCMU,PCMA description: The list of comma-separated codecs enabled for the connection. offered_codecs: type: string example: G722,PCMU,PCMA description: The list of comma-separated codecs offered by caller. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. custom_headers: description: Custom headers from sip invite type: array example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' sip_headers: description: User-to-User and Diversion headers from sip invite. type: array example: - name: User-to-User value: '1234' - name: Diversion value: items: $ref: '#/components/schemas/InboundSipHeader' shaken_stir_attestation: type: string example: A description: SHAKEN/STIR attestation level. shaken_stir_validated: type: boolean example: true description: Whether attestation was successfully validated or not. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. caller_id_name: type: string example: '+35319605860' description: Caller id. call_screening_result: type: string example: spam_likely description: Call screening result. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. direction: type: string example: incoming enum: - incoming - outgoing description: Whether the call is `incoming` or `outgoing`. state: type: string example: parked enum: - parked - bridging description: State received from a command. start_time: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the call started. tags: description: Array of tags associated to number. example: - tag-01 - tag-02 type: array items: type: string example: record_type: event event_type: call.initiated id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' direction: incoming state: parked CallInitiatedEvent: type: object title: Call Initiated Event properties: data: $ref: '#/components/schemas/CallInitiated' CallLeftQueue: type: object title: Call Left Queue properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.dequeued enum: - call.dequeued description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. queue: type: string example: support description: The name of the queue queue_position: type: integer example: 7 description: Last position of the call in the queue. reason: type: string description: The reason for leaving the queue example: bridged enum: - bridged - bridging-in-process - hangup - leave - timeout wait_time_secs: type: integer example: 60 description: Time call spent in the queue in seconds. example: record_type: event event_type: call.dequeued id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d queue: support queue_position: 3 reason: leave CallLeftQueueEvent: type: object title: Call Left Queue Event properties: data: $ref: '#/components/schemas/CallLeftQueue' CallMachineDetectionEnded: type: object title: Call Machine Detection Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.machine.detection.ended enum: - call.machine.detection.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. result: type: string example: machine enum: - human - machine - not_sure description: Answering machine detection result. example: record_type: event event_type: call.machine.detection.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: human CallMachineDetectionEndedEvent: type: object title: Call Machine Detection Ended Event properties: data: $ref: '#/components/schemas/CallMachineDetectionEnded' CallMachineGreetingEnded: type: object title: Call Machine Greeting Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.machine.greeting.ended enum: - call.machine.greeting.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. result: type: string example: ended enum: - beep_detected - ended - not_sure description: Answering machine greeting ended result. example: record_type: event event_type: call.machine.greeting.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: ended CallMachineGreetingEndedEvent: type: object title: Call Machine Greeting Ended Event properties: data: $ref: '#/components/schemas/CallMachineGreetingEnded' CallMachinePremiumCallScreeningDetected: type: object title: Call Machine Premium Call Screening Detected properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.machine.premium.call_screening.detected enum: - call.machine.premium.call_screening.detected description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. result: type: string example: screening enum: - screening description: Apple Call Screening detection result. Sent when an Apple Call Screening tone is detected; Premium Answering Machine Detection is restarted on the screened call afterwards. example: record_type: event event_type: call.machine.premium.call_screening.detected id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: screening CallMachinePremiumCallScreeningDetectedEvent: type: object title: Call Machine Premium Call Screening Detected Event properties: data: $ref: '#/components/schemas/CallMachinePremiumCallScreeningDetected' CallMachinePremiumDetectionEnded: type: object title: Call Machine Premium Detection Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.machine.premium.detection.ended enum: - call.machine.premium.detection.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. result: type: string example: machine enum: - human_residence - human_business - machine - silence - fax_detected - not_sure description: Premium Answering Machine Detection result. example: record_type: event event_type: call.machine.premium.detection.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: machine CallMachinePremiumDetectionEndedEvent: type: object title: Call Machine Premium Detection Ended Event properties: data: $ref: '#/components/schemas/CallMachinePremiumDetectionEnded' CallMachinePremiumDetectionStarted: type: object title: Call Machine Premium Detection Started properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.machine.premium.detection.started enum: - call.machine.premium.detection.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. example: record_type: event event_type: call.machine.premium.detection.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' CallMachinePremiumDetectionStartedEvent: type: object title: Call Machine Premium Detection Started Event properties: data: $ref: '#/components/schemas/CallMachinePremiumDetectionStarted' CallMachinePremiumGreetingEnded: type: object title: Call Machine Premium Greeting Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.machine.premium.greeting.ended enum: - call.machine.premium.greeting.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. result: type: string example: beep_detected enum: - beep_detected - no_beep_detected - prompt_ended description: Premium Answering Machine Greeting Ended result. `prompt_ended` is only sent when `answering_machine_detection` is `premium_ios_call_screening_detection` and the iOS call-screening prompt ends without a beep. example: record_type: event event_type: call.machine.premium.greeting.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: beep_detected CallMachinePremiumGreetingEndedEvent: type: object title: Call Machine Premium Greeting Ended Event properties: data: $ref: '#/components/schemas/CallMachinePremiumGreetingEnded' CallPaymentCompleted: type: object title: Call Payment Completed properties: record_type: type: string enum: - event example: event description: Identifies the type of the resource. event_type: type: string enum: - call.payment.completed example: call.payment.completed description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Unique identifier for the event. occurred_at: type: string format: date-time example: '2026-07-27T07:00:00.000000Z' description: ISO 8601 datetime when the event occurred. payload: type: object properties: call_control_id: type: string description: Call ID used to issue commands via Call Control API. example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: type: string description: Call Control App ID used in the call. example: 7267xxxxxxxxxxxxxx call_leg_id: type: string description: ID unique to the call leg. example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: type: string description: ID shared by related call legs in the same call session. example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 client_state: type: string description: Base64-encoded state received from the command. example: aGF2ZSBhIG5pY2UgZGF5ID1d from: type: string description: Number or SIP URI placing the call. example: +353****5860 to: type: string description: Destination number or SIP URI of the call. example: +131****7420 payment_connector: type: string description: Name of the Pay connector used. example: Default payment_method: type: string enum: - credit-card - ach-debit description: Payment method being collected. example: credit-card payment_card_type: type: string enum: - visa - mastercard - amex - optima - discover - diners-club - jcb - maestro - enroute description: Detected card type. Present only for the recognized card brands listed below. example: visa payment_card_number: type: string description: Masked card number with only the last four digits visible. example: xxxxxxxxxxxx1111 expiration_date: type: string description: Card expiration date in MMYY format. example: '1230' security_code: type: string description: Fully masked card security code. example: xxx payment_card_postal_code: type: string description: Billing postal code collected from the caller. example: '10001' bank_account_number: type: string description: Masked bank account number with only the last two digits visible. example: '********34' bank_routing_number: type: string description: Bank routing number collected from the caller. example: '110000000' bank_account_type: type: string description: Bank account type, when available. example: consumer-checking result: type: string enum: - success - payment-connector-error - internal-error - too-many-failed-attempts - cancelled description: Final Pay session result. example: success charge_id: type: string description: Charge identifier returned for a successful charge transaction. example: ch_abc123 token_id: type: string description: Token identifier returned for a successful tokenize transaction. example: tok_abc123 payment_confirmation_code: type: string description: Payment confirmation code returned by the processor, when available. example: CONF-98765 payment_error: type: string description: Step-level or processor error associated with the final result. example: pay_action_failed pay_error_code: type: string description: Error code returned by the payment connector or processor. example: card_declined connector_error: description: Additional connector error information, when supplied by the processor. oneOf: - type: string - type: object additionalProperties: true example: record_type: event event_type: call.payment.completed id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-07-27T07:00:00.000000Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 from: +353****5860 to: +131****7420 payment_connector: Default payment_method: credit-card payment_card_type: visa payment_card_number: xxxxxxxxxxxx1111 expiration_date: '1230' security_code: xxx payment_card_postal_code: '10001' result: success charge_id: ch_abc123 payment_confirmation_code: CONF-98765 CallPaymentCompletedEvent: type: object title: Call Payment Completed Event properties: data: $ref: '#/components/schemas/CallPaymentCompleted' CallPaymentProgress: type: object title: Call Payment Progress properties: record_type: type: string enum: - event example: event description: Identifies the type of the resource. event_type: type: string enum: - call.payment.progress example: call.payment.progress description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Unique identifier for the event. occurred_at: type: string format: date-time example: '2026-07-27T07:00:00.000000Z' description: ISO 8601 datetime when the event occurred. payload: type: object properties: call_control_id: type: string description: Call ID used to issue commands via Call Control API. example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: type: string description: Call Control App ID used in the call. example: 7267xxxxxxxxxxxxxx call_leg_id: type: string description: ID unique to the call leg. example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: type: string description: ID shared by related call legs in the same call session. example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 client_state: type: string description: Base64-encoded state received from the command. example: aGF2ZSBhIG5pY2UgZGF5ID1d from: type: string description: Number or SIP URI placing the call. example: +353****5860 to: type: string description: Destination number or SIP URI of the call. example: +131****7420 payment_connector: type: string description: Name of the Pay connector used. example: Default payment_method: type: string enum: - credit-card - ach-debit description: Payment method being collected. example: credit-card payment_card_type: type: string enum: - visa - mastercard - amex - optima - discover - diners-club - jcb - maestro - enroute description: Detected card type. Present only for the recognized card brands listed below. example: visa payment_card_number: type: string description: Masked card number with only the last four digits visible. example: xxxxxxxxxxxx1111 expiration_date: type: string description: Card expiration date in MMYY format. example: '1230' security_code: type: string description: Fully masked card security code. example: xxx payment_card_postal_code: type: string description: Billing postal code collected from the caller. example: '10001' bank_account_number: type: string description: Masked bank account number with only the last two digits visible. example: '********34' bank_routing_number: type: string description: Bank routing number collected from the caller. example: '110000000' bank_account_type: type: string description: Bank account type, when available. example: consumer-checking payment_step: type: string enum: - payment-card-number - expiration-date - postal-code - security-code - bank-routing-number - bank-account-number - payment-processing description: Current payment collection or processing step. example: payment-card-number payment_status: type: string enum: - completed - failed - processing description: Status of the current payment step. example: completed attempt: type: integer format: int32 minimum: 1 maximum: 3 description: Current 1-based attempt number for the step. example: 1 error_type: type: string enum: - timeout - invalid-card-number - invalid-card-type - invalid-date - invalid-security-code - invalid-postal-code - invalid-bank-routing-number - invalid-bank-account-number - input-matching-failed description: Step-level error when payment collection fails. example: invalid-card-number example: record_type: event event_type: call.payment.progress id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-07-27T07:00:00.000000Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 from: +353****5860 to: +131****7420 payment_connector: Default payment_method: credit-card payment_step: payment-card-number payment_status: completed attempt: 1 payment_card_type: visa payment_card_number: xxxxxxxxxxxx1111 CallPaymentProgressEvent: type: object title: Call Payment Progress Event properties: data: $ref: '#/components/schemas/CallPaymentProgress' CallPlaybackEnded: type: object title: Call Playback Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.playback.ended enum: - call.playback.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. media_url: type: string example: http://example.com/audio.wav description: The audio URL being played back, if audio_url has been used to start. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The name of the audio media file being played back, if media_name has been used to start. overlay: type: boolean example: false description: Whether the stopped audio was in overlay mode or not. status: type: string enum: - file_not_found - call_hangup - unknown - cancelled - cancelled_amd - completed - failed example: completed description: Reflects how command ended. status_detail: type: string example: Received curl error 22 HTTP error code 404 trying to fetch http://mediaurl.com. description: Provides details in case of failure. example: record_type: event event_type: call.playback.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d media_name: my_media_uploaded_to_media_storage_api overlay: false status: completed CallPlaybackEndedEvent: type: object title: Call Playback Ended Event properties: data: $ref: '#/components/schemas/CallPlaybackEnded' CallPlaybackStarted: type: object title: Call Playback Started properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.playback.started enum: - call.playback.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. media_url: type: string example: http://example.com/audio.wav description: The audio URL being played back, if audio_url has been used to start. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The name of the audio media file being played back, if media_name has been used to start. overlay: type: boolean example: false description: Whether the audio is going to be played in overlay mode or not. example: record_type: event event_type: call.playback.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d media_url: http://example.com/audio.wav overlay: false CallPlaybackStartedEvent: type: object title: Call Playback Started Event properties: data: $ref: '#/components/schemas/CallPlaybackStarted' CallReason: type: object properties: reason: type: string maxLength: 64 example: Appointment reminders created_at: type: string format: date-time example: '2026-04-26T18:06:51.940749Z' readOnly: true CallReasonReference: type: object description: Pre-vetted call-reason library entry. properties: id: type: string format: uuid example: d29914a4-3c93-440c-af72-03778f442522 readOnly: true reason: type: string example: Account Alert description: type: string example: Alert about account status or changes CallReasonReferenceList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/CallReasonReference' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' CallRecording: description: The call recording settings for a phone number. type: object properties: inbound_call_recording_enabled: type: boolean default: false description: When enabled, any inbound call to this number will be recorded. inbound_call_recording_format: type: string enum: - wav - mp3 default: wav description: The audio file format for calls being recorded. inbound_call_recording_channels: type: string enum: - single - dual default: single description: When using 'dual' channels, final audio file will be stereo recorded with the first leg on channel A, and the rest on channel B. example: inbound_call_recording_enabled: true inbound_call_recording_format: wav inbound_call_recording_channels: single CallRecordingSaved: type: object title: Call Recording Saved properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.recording.saved enum: - call.recording.saved description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. recording_started_at: type: string format: date-time example: '2018-02-02T22:20:27.521992Z' description: ISO 8601 datetime of when recording started. recording_ended_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when recording ended. channels: type: string example: single enum: - single - dual description: Whether recording was recorded in `single` or `dual` channel. recording_urls: type: object description: Recording URLs in requested format. These URLs are valid for 10 minutes. After 10 minutes, you may retrieve recordings via API using Reports -> Call Recordings documentation, or via Mission Control under Reporting -> Recordings. properties: mp3: type: - string - 'null' example: http://example.com/recording.mp3 description: Recording URL in requested `mp3` format. wav: type: - string - 'null' example: http://example.com/recording.wav description: Recording URL in requested `wav` format. public_recording_urls: type: object description: Recording URLs in requested format. The URL is valid for as long as the file exists. For security purposes, this feature is activated on a per request basis. Please contact customer support with your Account ID to request activation. properties: mp3: type: - string - 'null' example: http://example.com/recording.mp3 description: Recording URL in requested `mp3` format. wav: type: - string - 'null' example: http://example.com/recording.wav description: Recording URL in requested `wav` format. example: record_type: event event_type: call.recording.saved id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d recording_started_at: '2018-02-02T22:20:27.521992Z' recording_ended_at: '2018-02-02T22:20:27.521992Z' channels: single recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav public_recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav CallRecordingSavedEvent: type: object title: Call Recording Saved Event properties: data: $ref: '#/components/schemas/CallRecordingSaved' CallReferCompleted: type: object properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.refer.completed enum: - call.refer.completed description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA description: Unique ID for controlling the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. sip_notify_response: type: integer example: 200 description: SIP NOTIFY event status for tracking the REFER attempt. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. example: record_type: event event_type: call.refer.completed id: 4ce4366d-8d87-44be-a00b-942154e9c5f5 occurred_at: '2020-03-30T13:29:44.650000Z' payload: call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969 call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d connection_id: '1289082222292239760' from: '+35319605860' sip_notify_response: 200 to: '+13129457420' CallReferCompletedEvent: type: object title: Call Refer Completed Event properties: data: $ref: '#/components/schemas/CallReferCompleted' CallReferFailed: type: object properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.refer.failed enum: - call.refer.failed description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA description: Unique ID for controlling the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. sip_notify_response: type: integer example: 603 description: SIP NOTIFY event status for tracking the REFER attempt. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. example: record_type: event event_type: call.refer.failed id: fbeb70e0-54eb-4e26-8d19-56b43e66f754 occurred_at: '2020-03-30T13:29:42.130013Z' payload: call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969 call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d connection_id: '1289082222292239760' from: '+35319605860' sip_notify_response: 603 to: '+13129457420' CallReferFailedEvent: type: object title: Call Refer Failed Event properties: data: $ref: '#/components/schemas/CallReferFailed' CallReferStarted: type: object title: Call Refer Started properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.refer.started enum: - call.refer.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA description: Unique ID for controlling the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. sip_notify_response: type: integer example: 100 description: SIP NOTIFY event status for tracking the REFER attempt. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. example: record_type: event event_type: call.refer.started id: fbeb70e0-54eb-4e26-8d19-56b43e66f754 occurred_at: '2020-03-30T13:29:42.130013Z' payload: call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969 call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d connection_id: '1289082222292239760' from: '+35319605860' sip_notify_response: 100 to: '+13129457420' CallReferStartedEvent: type: object title: Call Refer Started Event properties: data: $ref: '#/components/schemas/CallReferStarted' CallRequest: type: object title: Dial Request required: - connection_id - to - from example: to: +18005550100 or sip:username@sip.telnyx.com;secure=srtp from: '+18005550101' from_display_name: Company Name connection_id: 7267xxxxxxxxxxxxxx conference_config: conference_name: telnyx-conference start_conference_on_enter: true audio_url: http://www.example.com/sounds/greeting.wav send_digits_on_answer: wwww200 timeout_secs: 60 time_limit_secs: 60 webhook_url: https://www.example.com/server-b/ webhook_url_method: POST webhook_urls: call.hangup: - https://www.example.com/webhooks/hangup call.bridge: - https://www.example.com/webhooks/bridge webhook_urls_method: POST webhook_retries_policies: call.hangup: retries_ms: - 1000 - 2000 - 5000 answering_machine_detection: detect answering_machine_detection_config: total_analysis_time_millis: 5000 after_greeting_silence_millis: 1000 between_words_silence_millis: 1000 greeting_duration_millis: 1000 initial_silence_millis: 1000 maximum_number_of_words: 1000 maximum_word_length_millis: 2000 silence_threshold: 512 greeting_total_analysis_time_millis: 50000 greeting_silence_duration_millis: 2000 deepfake_detection: enabled: true timeout: 15 rtp_timeout: 30 custom_headers: - name: head_1 value: val_1 - name: head_2 value: val_2 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 link_to: ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg== bridge_intent: true bridge_on_answer: true media_encryption: SRTP sip_auth_username: username sip_auth_password: password sip_headers: - name: User-to-User value: '12345' sip_transport_protocol: TLS stream_url: wss://www.example.com/websocket stream_track: both_tracks send_silence_when_idle: true enable_dialogflow: false dialogflow_config: analyze_sentiment: false partial_automated_agent_reply: false conversation_relay_config: url: wss://example.com/conversation-relay dtmf_detection: true greeting: Hi! Ask me anything! voice: Telnyx.KokoroTTS.af tts_provider: telnyx language: en-US interruptible: speech interruptible_greeting: dtmf custom_parameters: customer_id: '12345' properties: assistant: $ref: '#/components/schemas/CallAssistantRequest' conversation_relay_config: $ref: '#/components/schemas/ConversationRelayEmbeddedConfig' to: description: The DID or SIP URI to dial out to. Multiple DID or SIP URIs can be provided using an array of strings. For SIP URI destinations, append `;secure=true` or `;secure=srtp` to enable SRTP media encryption for that endpoint, or `;secure=dtls` to enable DTLS media encryption for that endpoint. If `media_encryption` is set to `SRTP` or `DTLS`, it takes precedence over any per-endpoint `secure` URI parameter. For a single string destination, you may append a comma followed by DTMF digits (e.g. `+18004247767,200`) to play those digits as DTMF once the called party answers — equivalent to setting `send_digits_on_answer` separately. If both are present, the explicit `send_digits_on_answer` parameter takes precedence. This shorthand is not supported when `to` is an array. oneOf: - type: string example: +18005550100 or sip:username@sip.telnyx.com;secure=srtp - type: array items: type: string example: - '+18005550100' - sip:username@sip.telnyx.com;secure=srtp from: description: The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format. type: string example: '+18005550101' diversion: description: The `to` number of an active inbound call, in +E164 format. Telnyx checks whether there is currently an active inbound call where `to` matches this `diversion` value and `from` matches the `from` number supplied for this request. If such a call exists, the `from` number is treated as verified (since it is already on an active inbound call to you) and can be used as the caller id for this outbound call. type: string example: '+18005550101' from_display_name: description: The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from` field. type: string example: Company Name privacy: type: string description: Indicates the privacy level to be used for the call. When set to `id`, caller ID information (name and number) will be hidden from the called party. When set to `none` or omitted, caller ID will be shown normally. enum: - id - none example: id connection_id: type: string description: The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination. audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played back to the callee when the call is answered. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request. send_digits_on_answer: type: string example: wwww200 description: 'DTMF digits to send automatically after the called party answers. Useful for reaching an extension behind an IVR (e.g. `"200"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`, `A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent. May also be supplied inline by appending `,` to `to` (e.g. `to=+18004247767,200`); if both forms are present, this explicit field takes precedence.' media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played back to the callee when the call is answered. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. preferred_codecs: type: string description: The list of comma-separated codecs in a preferred order for the forked media to be received. example: G722,PCMU,PCMA,G729,OPUS,VP8,H264 timeout_secs: description: The number of seconds that Telnyx will wait for the call to be answered by the destination to which it is being called. If the timeout is reached before an answer is received, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `timeout` will be sent. Minimum value is 5 seconds. Maximum value is 600 seconds. default: 30 type: integer example: 60 format: int32 retry_on_timeout: description: Whether to keep trying the remaining routing paths (e.g. alternate providers/gateways) for the same destination after `timeout_secs` is reached for the current attempt. When set to `false`, reaching `timeout_secs` aborts the entire dial attempt and the `call.hangup` webhook reports a `hangup_cause` of `no_answer` instead of `timeout`. default: true type: boolean example: true time_limit_secs: description: Sets the maximum duration of a Call Control Leg in seconds. If the time limit is reached, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `time_limit` will be sent. For example, by setting a time limit of 120 seconds, a Call Leg will be automatically terminated two minutes after being answered. The default time limit is 14400 seconds or 4 hours and this is also the maximum allowed call length. default: 14400 type: integer example: 600 format: int32 minimum: 30 maximum: 14400 answering_machine_detection: description: 'Enables Answering Machine Detection. Telnyx offers Premium and Standard detections. With Premium detection, when a call is answered, Telnyx runs real-time detection and sends a `call.machine.premium.detection.ended` webhook with one of the following results: `human_residence`, `human_business`, `machine`, `silence` or `fax_detected`. If we detect a beep, we also send a `call.machine.premium.greeting.ended` webhook with the result of `beep_detected`. If we detect a beep before `call.machine.premium.detection.ended` we only send `call.machine.premium.greeting.ended`, and if we detect a beep after `call.machine.premium.detection.ended`, we send both webhooks. With Standard detection, when a call is answered, Telnyx runs real-time detection to determine if it was picked up by a human or a machine and sends an `call.machine.detection.ended` webhook with the analysis result. If `greeting_end` or `detect_words` is used and a `machine` is detected, you will receive another `call.machine.greeting.ended` webhook when the answering machine greeting ends with a beep or silence. If `detect_beep` is used, you will only receive `call.machine.greeting.ended` if a beep is detected. If `answering_machine_detection` is set to `premium_ios_call_screening_detection`, Premium AMD runs with iOS Call Screening support: after an initial `machine` result, Telnyx listens for the iOS call-screening prompt to end or for an Apple Call Screening tone, sends `call.machine.premium.greeting.ended` with `result=prompt_ended` or `call.machine.premium.call_screening.detected` with `result=screening` respectively. When the Apple Call Screening tone is detected, Premium AMD is restarted on the screened call and a `call.machine.premium.detection.ended` webhook with the post-screening classification follows.' default: disabled type: string enum: - premium - premium_ios_call_screening_detection - detect - detect_beep - detect_words - greeting_end - disabled answering_machine_detection_config: description: Optional configuration parameters to modify 'answering_machine_detection' performance. Only `total_analysis_time_millis` and `greeting_duration_millis` parameters are applicable when `premium` is selected as answering_machine_detection. `prompt_end_timeout_millis` is additionally applicable when `premium_ios_call_screening_detection` is selected. type: object properties: total_analysis_time_millis: description: Maximum timeout threshold for overall detection. default: 3500 type: integer example: 5000 format: int32 beep_detection_profile: description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile. default: both type: string example: freq_only enum: - both - freq_only beep_min_frequency_hz: description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when beep detection is active. type: integer example: 550 format: int32 minimum: 200 maximum: 4000 beep_max_frequency_hz: description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when beep detection is active. type: integer example: 2000 format: int32 minimum: 200 maximum: 4000 beep_min_tone_duration_millis: description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when beep detection is active. type: integer example: 300 format: int32 minimum: 50 maximum: 5000 beep_spectral_confirmation: description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when beep detection is active. type: boolean example: true beep_spectral_window_millis: description: Length of the spectral confirmation window, in milliseconds. Only used when beep detection is active. type: integer example: 100 format: int32 minimum: 20 maximum: 1000 beep_spectral_min_purity: description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when beep detection is active. type: number example: 0.8 minimum: 0 maximum: 1 beep_spectral_reject_fax_cng: description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when beep detection is active. type: boolean example: true after_greeting_silence_millis: description: Silence duration threshold after a greeting message or voice for it be considered human. default: 800 type: integer example: 1000 format: int32 between_words_silence_millis: description: Maximum threshold for silence between words. default: 50 type: integer example: 100 format: int32 greeting_duration_millis: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. default: 3500 type: integer example: 1500 format: int32 initial_silence_millis: description: If initial silence duration is greater than this value, consider it a machine. default: 3500 type: integer example: 1800 format: int32 maximum_number_of_words: description: If number of detected words is greater than this value, consder it a machine. default: 5 type: integer example: 3 format: int32 maximum_word_length_millis: description: If a single word lasts longer than this threshold, consider it a machine. default: 3500 type: integer example: 2000 format: int32 silence_threshold: description: Minimum noise threshold for any analysis. default: 256 type: integer example: 512 format: int32 greeting_total_analysis_time_millis: description: If machine already detected, maximum timeout threshold to determine the end of the machine greeting. default: 5000 type: integer example: 7500 format: int32 greeting_silence_duration_millis: description: If machine already detected, maximum threshold for silence between words. If exceeded, the greeting is considered ended. default: 1500 type: integer example: 2000 format: int32 prompt_end_timeout_millis: description: Maximum time Telnyx waits, in milliseconds, for the iOS call-screening prompt to end after Premium AMD initially detects a `machine`. Used when `answering_machine_detection` is `premium_ios_call_screening_detection`. Defaults to 5000 milliseconds. default: 5000 type: integer example: 5000 format: int32 minimum: 1000 maximum: 120000 deepfake_detection: description: Enables deepfake detection on the call. When enabled, audio from the remote party is streamed to a detection service that analyzes whether the voice is AI-generated. Results are delivered via the `call.deepfake_detection.result` webhook. type: object required: - enabled properties: enabled: type: boolean default: false description: Whether deepfake detection is enabled. timeout: type: integer format: int32 default: 15 minimum: 5 maximum: 60 description: Maximum time in seconds to wait for a detection result before timing out. rtp_timeout: type: integer format: int32 default: 30 minimum: 5 maximum: 120 description: Maximum time in seconds to wait for RTP audio before timing out. If no audio is received within this window, detection stops with an error. conference_config: description: Optional configuration parameters to dial new participant into a conference. type: object properties: id: description: Conference ID to be joined type: string example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 format: uuid conference_name: description: Conference name to be joined type: string example: telnyx-conference early_media: description: Controls the moment when dialled call is joined into conference. If set to `true` user will be joined as soon as media is available (ringback). If `false` user will be joined when call is answered. Defaults to `true` type: boolean example: false default: true end_conference_on_exit: description: Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to "false". example: true type: boolean soft_end_conference_on_exit: description: Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to "false". example: true type: boolean hold: description: Whether the participant should be put on hold immediately after joining the conference. Defaults to "false". example: true type: boolean hold_audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played to the participant when they are put on hold after joining the conference. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when "start_conference_on_create" is set to "false". This property takes effect only if "hold" is set to "true". hold_media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played to the participant when they are put on hold after joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when "start_conference_on_create" is set to "false". This property takes effect only if "hold" is set to "true". mute: description: Whether the participant should be muted immediately after joining the conference. Defaults to "false". example: true type: boolean start_conference_on_enter: description: Whether the conference should be started after the participant joins the conference. Defaults to "false". example: true type: boolean start_conference_on_create: description: Whether the conference should be started on creation. If the conference isn't started all participants that join are automatically put on hold. Defaults to "true". example: false type: boolean supervisor_role: description: Sets the joining participant as a supervisor for the conference. A conference can have multiple supervisors. "barge" means the supervisor enters the conference as a normal participant. This is the same as "none". "monitor" means the supervisor is muted but can hear all participants. "whisper" means that only the specified "whisper_call_control_ids" can hear the supervisor. Defaults to "none". example: whisper type: string enum: - barge - monitor - none - whisper whisper_call_control_ids: description: Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor will join the conference as a monitoring participant only. example: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw type: array items: type: string beep_enabled: description: Whether a beep sound should be played when the participant joins and/or leaves the conference. Can be used to override the conference-level setting. enum: - always - never - on_enter - on_exit example: on_exit type: string custom_headers: description: Custom headers to be added to the SIP INVITE. type: array example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' billing_group_id: description: Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID. type: string format: uuid example: f5586561-8ff0-4291-a0ac-84fe544797bd client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore others Dial commands with the same `command_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 link_to: description: Use another call's control id for sharing the same call session id type: string example: ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg== bridge_intent: description: Indicates the intent to bridge this call with the call specified in link_to. When bridge_intent is true, link_to becomes required and the from number will be overwritten by the from number from the linked call. type: boolean default: false example: true bridge_on_answer: description: Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer is true, link_to becomes required. type: boolean default: false example: true prevent_double_bridge: description: Prevents bridging and hangs up the call if the target is already bridged. Disabled by default. type: boolean default: false example: true park_after_unbridge: description: If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default behavior is to hang up the leg. When park_after_unbridge is set, link_to becomes required. type: string example: self media_encryption: description: 'Defines whether media should be encrypted on the call. For SIP URI destinations, media encryption can also be requested per endpoint with the `secure` URI parameter: `;secure=true` or `;secure=srtp` enables SRTP, and `;secure=dtls` enables DTLS. This parameter, when set to `SRTP` or `DTLS`, takes precedence over the per-endpoint `secure` value.' default: disabled type: string enum: - disabled - SRTP - DTLS sip_auth_username: description: SIP Authentication username used for SIP challenges. type: string sip_auth_password: description: SIP Authentication password used for SIP challenges. type: string sip_headers: description: SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported. type: array example: - name: User-to-User value: value items: $ref: '#/components/schemas/SipHeader' sip_transport_protocol: description: Defines SIP transport protocol to be used on the call. default: UDP type: string enum: - UDP - TCP - TLS sound_modifications: $ref: '#/components/schemas/SoundModifications' stream_url: description: The destination WebSocket address where the stream is going to be delivered. type: string example: wss://www.example.com/websocket stream_track: description: Specifies which track should be streamed. type: string enum: - inbound_track - outbound_track - both_tracks default: inbound_track example: both_tracks stream_codec: $ref: '#/components/schemas/StreamCodec' stream_bidirectional_mode: $ref: '#/components/schemas/StreamBidirectionalMode' stream_bidirectional_codec: $ref: '#/components/schemas/StreamBidirectionalCodec' stream_bidirectional_target_legs: $ref: '#/components/schemas/StreamBidirectionalTargetLegs' stream_bidirectional_sampling_rate: $ref: '#/components/schemas/StreamBidirectionalSamplingRate' stream_establish_before_call_originate: description: Establish websocket connection before dialing the destination. This is useful for cases where the websocket connection takes a long time to establish. type: boolean default: false example: true send_silence_when_idle: description: Generate silence RTP packets when no transmission available. type: boolean default: false example: true webhook_url: description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call. type: string example: https://www.example.com/server-b/ webhook_url_method: description: HTTP request type used for `webhook_url`. default: POST type: string enum: - POST - GET example: GET webhook_urls: description: A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook URLs associated with that event type will be called instead of the default webhook URL. Events not mapped here will use the default webhook URL. type: object additionalProperties: type: array items: type: string format: uri example: call.hangup: - https://www.example.com/webhooks/hangup call.bridge: - https://www.example.com/webhooks/bridge webhook_urls_method: description: HTTP request method to invoke `webhook_urls`. type: string enum: - POST - GET default: POST example: POST webhook_retries_policies: description: A map of event types to retry policies. Each retry policy contains an array of `retries_ms` specifying the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds. type: object additionalProperties: type: object properties: retries_ms: type: array items: type: integer maxItems: 5 description: Array of delays in milliseconds between retry attempts. Total sum cannot exceed 60000ms. example: call.hangup: retries_ms: - 1000 - 2000 - 5000 record: description: Start recording automatically after an event. Disabled by default. type: string enum: - record-from-answer example: record-from-answer record_channels: description: Defines which channel should be recorded ('single' or 'dual') when `record` is specified. type: string enum: - single - dual default: dual example: single record_format: description: Defines the format of the recording ('wav' or 'mp3') when `record` is specified. type: string enum: - wav - mp3 default: mp3 example: wav record_max_length: description: Defines the maximum length for the recording in seconds when `record` is specified. The minimum value is 0. The maximum value is 43200. The default value is 0 (infinite). type: integer format: int32 default: 0 example: 1000 record_timeout_secs: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite). type: integer format: int32 default: 0 example: 100 record_track: description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single channel). type: string example: outbound default: both enum: - both - inbound - outbound record_trim: description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording. enum: - trim-silence type: string example: trim-silence record_custom_file_name: description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix. type: string minLength: 1 maxLength: 40 example: my_recording_file_name supervise_call_control_id: description: The call leg which will be supervised by the new call. type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg supervisor_role: description: The role of the supervisor call. 'barge' means that supervisor call hears and is being heard by both ends of the call (caller & callee). 'whisper' means that only supervised_call_control_id hears supervisor but supervisor can hear everything. 'monitor' means that nobody can hear supervisor call, but supervisor can hear everything on the call. type: string enum: - barge - whisper - monitor default: barge enable_dialogflow: description: Enables Dialogflow for the current call. The default value is false. type: boolean default: false example: true dialogflow_config: $ref: '#/components/schemas/DialogflowConfig' transcription: description: Enable transcription upon call answer. The default value is false. type: boolean default: false example: true transcription_config: $ref: '#/components/schemas/TranscriptionStartRequest' sip_region: description: Defines the SIP region to be used for the call. type: string default: US enum: - US - Europe - Canada - Australia - Middle East example: Canada stream_auth_token: description: An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters. type: string maxLength: 4000 example: your-auth-token route_to_mobile: description: When set to true, routes the call directly to the mobile device associated with the destination Telnyx Mobile number, bypassing Inbound Calls Interception configured in the Telnyx Portal under Mobile Numbers → select the number → Voice → Call Interception. Use this when transferring an intercepted call to the mobile device to prevent the call from being intercepted again. Defaults to false. type: boolean default: false example: true CallResource: type: object title: Call resource example: account_sid: 61bf923e-5e4d-4595-a110-56190ea18a1b answered_by: human caller_name: '+13122010094' date_created: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: Thu, 15 Jun 2023 09:56:56 +0000 direction: inbound duration: '11' end_time: Thu, 15 Jun 2023 09:56:56 +0000 from: '+13123456789' from_formatted: (312) 345-6789 sid: v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA start_time: Thu, 15 Jun 2023 09:56:45 +0000 status: completed to: '+13987654321' to_formatted: (398) 765-4321 uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b answered_by: type: string description: The value of the answering machine detection result, if this feature was enabled for the call. enum: - human - machine - not_sure example: human caller_name: type: string description: Caller ID, if present. example: CALLER date_created: type: string description: The timestamp of when the resource was created. example: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Thu, 15 Jun 2023 09:56:45 +0000 direction: type: string description: The direction of this call. enum: - inbound - outbound example: inbound duration: type: string description: The duration of this call, given in seconds. example: '12' end_time: type: string description: The end time of this call. example: Thu, 15 Jun 2023 09:56:45 +0000 from: type: string description: The phone number or SIP address that made this call. example: '+13123456789' from_formatted: type: string description: The from number formatted for display. example: (312) 345-6789 price: type: string description: The price of this call, the currency is specified in the price_unit field. Only populated when the call cost feature is enabled for the account. example: '0.10' price_unit: type: string description: The unit in which the price is given. example: USD sid: type: string description: The identifier of this call. example: v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA start_time: type: string description: The start time of this call. example: Thu, 15 Jun 2023 09:56:45 +0000 status: type: string description: The status of this call. enum: - ringing - in-progress - canceled - completed - failed - busy - no-answer example: completed to: type: string description: The phone number or SIP address that received this call. example: '+13987654321' to_formatted: type: string description: The to number formatted for display. example: (398) 765-4321 uri: type: string description: The relative URI for this call. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA.json CallResourceIndex: type: object title: Multiple call resources example: calls: [] end: 0 first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ page: 0 page_size: 1 start: 0 uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 properties: calls: type: array items: $ref: '#/components/schemas/CallResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: 19 first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: 0 page_size: type: integer description: The number of items on the page example: 20 start: type: integer description: The number of the first element on the page, zero-indexed. example: 0 uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 CallSiprecFailed: type: object title: Siprec Failed properties: record_type: type: string example: event enum: - event description: Identifies the resource. event_type: type: string example: siprec.failed enum: - siprec.failed description: The type of event being delivered. id: type: string format: uuid example: 25dc3731-e51e-4927-a50d-a61cc25984b1 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2021-12-15T14:11:24.613295Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. failure_cause: type: string example: no_answer description: Q850 reason why siprec session failed. example: record_type: event event_type: siprec.failed id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d failure_cause: no_answer CallSiprecFailedEvent: type: object title: Siprec Failed Event properties: data: $ref: '#/components/schemas/CallSiprecFailed' CallSiprecStarted: type: object title: Siprec Started properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: siprec.started enum: - siprec.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2021-12-15T14:06:32.059436Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. example: record_type: event event_type: siprec.started id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031 occurred_at: '2021-12-15T14:06:32.059436Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d CallSiprecStartedEvent: type: object title: Siprec Started Event properties: data: $ref: '#/components/schemas/CallSiprecStarted' CallSiprecStopped: type: object title: Siprec Stopped properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: siprec.stopped enum: - siprec.stopped description: The type of event being delivered. id: type: string format: uuid example: 25dc3731-e51e-4927-a50d-a61cc25984b1 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2021-12-15T14:11:24.613295Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. hangup_cause: type: string example: normal_clearing description: Q850 reason why the SIPREC session was stopped. example: record_type: event event_type: siprec.stopped id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d hangup_cause: normal_clearing CallSiprecStoppedEvent: type: object title: Siprec Stopped Event properties: data: $ref: '#/components/schemas/CallSiprecStopped' CallSpeakEnded: type: object title: Call Speak Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.speak.ended enum: - call.speak.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. status: type: string example: completed enum: - completed - call_hangup - cancelled_amd description: Reflects how the command ended. example: record_type: event event_type: call.speak.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d status: completed CallSpeakEndedEvent: type: object title: Call Speak Ended Event properties: data: $ref: '#/components/schemas/CallSpeakEnded' CallSpeakStarted: type: object title: Call Speak Started properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.speak.started enum: - call.speak.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. example: record_type: event event_type: call.speak.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d CallSpeakStartedEvent: type: object title: Call Speak Started Event properties: data: $ref: '#/components/schemas/CallSpeakStarted' CallStreamingFailed: type: object title: Streaming Failed properties: record_type: type: string example: event enum: - event description: Identifies the resource. event_type: type: string example: streaming.failed enum: - streaming.failed description: The type of event being delivered. id: type: string format: uuid example: 25dc3731-e51e-4927-a50d-a61cc25984b1 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2021-12-15T14:11:24.613295Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. failure_reason: type: string example: connection_failed description: A short description explaning why the media streaming failed. stream_id: type: string format: uuid example: 1edb94f9-7ef0-4150-b502-e0ebadfd9491 description: Identifies the streaming. stream_params: type: object description: Streaming parameters as they were originally given to the Call Control API. properties: stream_url: type: string example: wss://www.example.com/websocket description: The destination WebSocket address where the stream is going to be delivered. track: description: Specifies which track should be streamed. type: string enum: - inbound_track - outbound_track - both_tracks default: inbound_track example: inbound_track stream_type: type: string example: websocket enum: - websocket - dialogflow description: The type of stream connection the stream is performing. example: record_type: event event_type: streaming.failed id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d failure_reason: connection_failed stream_id: 1edb94f9-7ef0-4150-b502-e0ebadfd9491 stream_params: stream_url: wss://www.example.com/websocket track: inbound_track stream_type: websocket CallStreamingFailedEvent: type: object title: Streaming Failed Event properties: data: $ref: '#/components/schemas/CallStreamingFailed' CallStreamingStarted: type: object title: Streaming Started properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: streaming.started enum: - streaming.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2021-12-15T14:06:32.059436Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. stream_url: type: string example: wss://www.example.com/websocket description: Destination WebSocket address where the stream is going to be delivered. example: record_type: event event_type: streaming.started id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031 occurred_at: '2021-12-15T14:06:32.059436Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_url: wss://www.example.com/websocket CallStreamingStartedEvent: type: object title: Streaming Started Event properties: data: $ref: '#/components/schemas/CallStreamingStarted' CallStreamingStopped: type: object title: Streaming Stopped properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: streaming.stopped enum: - streaming.stopped description: The type of event being delivered. id: type: string format: uuid example: 25dc3731-e51e-4927-a50d-a61cc25984b1 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2021-12-15T14:11:24.613295Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 31f19208-5db0-11ec-9ea7-02420a0d3a69 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. stream_url: type: string example: wss://www.example.com/websocket description: Destination WebSocket address where the stream is going to be delivered. example: record_type: event event_type: streaming.stopped id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_url: wss://www.example.com/websocket CallStreamingStoppedEvent: type: object title: Streaming Stopped Event properties: data: $ref: '#/components/schemas/CallStreamingStopped' CallUnhold: type: object title: Call Unhold properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.unhold enum: - call.unhold description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. example: record_type: event event_type: call.unhold id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' CallUnholdEvent: type: object title: Call Unhold Event properties: data: $ref: '#/components/schemas/CallUnhold' CallWithRecordingId: type: object title: Call With Recording ID required: - call_control_id - call_leg_id - call_session_id - is_alive - record_type example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768 call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d is_alive: false call_duration: 50 record_type: call recording_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a start_time: '2019-01-23T18:10:02.574Z' end_time: '2019-01-23T18:11:52.574Z' properties: record_type: type: string enum: - call example: call call_session_id: description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call type: string example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1 call_leg_id: description: ID that is unique to the call and can be used to correlate webhook events type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_control_id: description: Unique identifier and token for controlling the call. type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg is_alive: description: Indicates whether the call is alive or not. For Dial command it will always be `false` (dialing is asynchronous). type: boolean example: true client_state: description: State received from a command. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d call_duration: description: Indicates the duration of the call in seconds type: integer example: 50 recording_id: type: string format: uuid example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a description: The ID of the recording. Only present when the record parameter is set to record-from-answer. start_time: description: ISO 8601 formatted date indicating when the call started type: string example: '2019-01-23T18:10:02.574Z' end_time: description: ISO 8601 formatted date indicating when the call ended. Only present when the call is not alive type: string example: '2019-01-23T18:11:52.574Z' CallerName: type: object properties: caller_name: type: string description: The name of the requested phone number's owner as per the CNAM database example: TELNYX LLC error_code: type: string description: A caller-name lookup specific error code, expressed as a stringified 5-digit integer example: '10001' CampaignCost: title: CampaignCost required: - campaignUsecase - monthlyCost - upFrontCost - description type: object properties: campaignUsecase: title: Campaignusecase type: string monthlyCost: title: Monthlycost type: string upFrontCost: title: Upfrontcost type: string description: title: Description type: string CampaignDeletionResponse: title: CampaignDeletionResponse required: - time type: object properties: time: title: Time type: number record_type: title: Record Type type: string message: title: Message type: string CampaignRecordSet_CSP: title: CampaignRecordSet_CSP type: object properties: records: title: Records type: array items: $ref: '#/components/schemas/TelnyxCampaignWithAssignedCount_CSP' page: title: Page type: integer totalRecords: title: Totalrecords type: integer CampaignRequest: title: CampaignRequest required: - brandId - description - usecase type: object properties: ageGated: title: Agegated type: boolean description: Age gated message content in campaign. autoRenewal: title: Autorenewal type: boolean description: Campaign subscription auto-renewal option. If set to true, then campaign will automatically renewal at end of billing cycle. brandId: title: Brandid type: string description: Alphanumeric identifier of the brand associated with this campaign. description: title: Description type: string description: Summary description of this campaign. directLending: title: Directlending type: boolean description: Direct lending or loan arrangement embeddedLink: title: Embeddedlink type: boolean description: Does message generated by the campaign include URL link in SMS? embeddedPhone: title: Embeddedphone type: boolean description: Does message generated by the campaign include phone number in SMS? helpKeywords: title: Helpkeywords type: string description: Subscriber help keywords. Multiple keywords are comma separated without space. helpMessage: title: Helpmessage type: string description: Help message of the campaign. messageFlow: title: Messageflow type: string description: Message flow description. mnoIds: title: Mnoids uniqueItems: true type: array items: type: integer description: Submit campaign to given list of MNOs by MNO's network ID. Default is all MNOs if no value provided. numberPool: title: Numberpool type: boolean description: Does campaign utilize pool of phone numbers? optinKeywords: title: Optinkeywords type: string description: Subscriber opt-in keywords. Multiple keywords are comma separated without space. optinMessage: title: Optinmessage type: string description: Subscriber opt-in message. optoutKeywords: title: Optoutkeywords type: string description: Subscriber opt-out keywords. Multiple keywords are comma separated without space. optoutMessage: title: Optoutmessage type: string description: Subscriber opt-out message. referenceId: title: Referenceid type: string description: Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns. Can be used to prevent duplicate campaign registrations. resellerId: title: Resellerid type: string description: Alphanumeric identifier of the reseller that you want to associate with this campaign. sample1: title: Sample1 type: string description: Message sample. Some campaign tiers require 1 or more message samples. sample2: title: Sample2 type: string description: Message sample. Some campaign tiers require 2 or more message samples. sample3: title: Sample3 type: string description: Message sample. Some campaign tiers require 3 or more message samples. sample4: title: Sample4 type: string description: Message sample. Some campaign tiers require 4 or more message samples. sample5: title: Sample5 type: string description: Message sample. Some campaign tiers require 5 or more message samples. subUsecases: title: Subusecases uniqueItems: true type: array items: type: string description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases subscriberHelp: title: Subscriberhelp type: boolean description: Does campaign responds to help keyword(s)? subscriberOptin: title: Subscriberoptin type: boolean description: Does campaign require subscriber to opt-in before SMS is sent to subscriber? subscriberOptout: title: Subscriberoptout type: boolean description: Does campaign support subscriber opt-out keyword(s)? tag: title: Tag uniqueItems: true type: array items: type: string description: Tags to be set on the Campaign. termsAndConditions: title: Termsandconditions type: boolean description: Is terms and conditions accepted? privacyPolicyLink: title: PrivacyPolicyLink type: string description: Link to the campaign's privacy policy. termsAndConditionsLink: title: TermsAndConditionsLink type: string description: Link to the campaign's terms and conditions. embeddedLinkSample: title: EmbeddedLinkSample type: string description: Sample of an embedded link that will be sent to subscribers. usecase: title: Usecase type: string description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand. webhookURL: title: WebhookURL type: string description: Webhook to which campaign status updates are sent. example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93 webhookFailoverURL: title: WebhookFailoverURL type: string description: Failover webhook to which campaign status updates are sent. example: https://webhook.com/93711262-23e5-4048-a966-c0b2a16d5963 description: CampaignRequest object describes the campaign to be submitted via '/campaignBuilder/brand/{brandId}/usecase/{usecase}' operation. It is also used in operations for retrieving status of campaign request and for updating a pending request. CampaignSharingChain: title: CampaignSharingChain type: object properties: sharedByMe: $ref: '#/components/schemas/CampaignSharingStatus' sharedWithMe: $ref: '#/components/schemas/CampaignSharingStatus' CampaignSharingStatus: title: CampaignSharingStatus type: object properties: downstreamCnpId: title: Downstreamcnpid type: string sharedDate: title: Shareddate type: string sharingStatus: title: Sharingstatus type: string statusDate: title: Statusdate type: string upstreamCnpId: title: Upstreamcnpid type: string CampaignStatusUpdateEvent: title: Campaign Status Update Event type: object properties: brandId: title: Brandid type: string description: Brand ID associated with the campaign. example: d88dd2aa-1bb9-4ef0-9ec8-1752b80316a5 campaignId: title: Campaignid type: string description: The ID of the campaign. example: 4b300178-131c-d902-d54e-72d90ba1620j createDate: title: CreateDate type: string description: Unix timestamp when campaign was created. cspId: title: Cspid type: string description: Alphanumeric identifier of the CSP associated with this campaign. isTMobileRegistered: title: IsTMobileRegistered type: boolean description: Indicates whether the campaign is registered with T-Mobile. type: title: Type type: string enum: - TELNYX_EVENT - REGISTRATION - MNO_REVIEW - TELNYX_REVIEW - NUMBER_POOL_PROVISIONED - NUMBER_POOL_DEPROVISIONED - TCR_EVENT - VERIFIED example: TELNYX_EVENT description: title: Description type: string description: Description of the event. example: Campaign has been marked as dormant status: title: Status type: string enum: - ACCEPTED - REJECTED - DORMANT - success - failed description: The status of the campaign. example: DORMANT CanaryDeployRequest: properties: rules: title: Rules items: $ref: '#/components/schemas/Rule-Input' type: array type: object title: CanaryDeployRequest description: 'Create/update request body. Accepts: - ``rules`` — canonical ordered list of routing rules' CanaryDeployResponse: properties: assistant_id: type: string title: Assistant Id rules: items: $ref: '#/components/schemas/Rule-Output' type: array title: Rules created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At type: object required: - assistant_id - rules - created_at - updated_at title: CanaryDeployResponse description: 'Response shape. Always carries ``rules`` (canonical).' CancelPendingVersionResponse: type: object properties: data: type: object properties: cancelled: $ref: '#/components/schemas/DocReqsRequirement' restored: $ref: '#/components/schemas/DocReqsRequirement' CapabilitiesResponse: type: object additionalProperties: false properties: brand_entity: type: boolean brand_verification: type: boolean submission_sections: type: boolean distinct_launch_phase: type: boolean per_carrier_approval: type: boolean templates: type: boolean campaigns: type: boolean vendor_webhooks: type: boolean invite_test_devices: type: boolean required: - brand_entity - brand_verification - submission_sections - distinct_launch_phase - per_carrier_approval - templates - campaigns - vendor_webhooks - invite_test_devices Carrier: type: object properties: mobile_country_code: type: string description: Region code that matches the specific country calling code if the requested phone number type is mobile example: US mobile_network_code: type: string description: National destination code (NDC), with a 0 prefix, if an NDC is found and the requested phone number type is mobile example: 0866 name: type: string description: SPID (Service Provider ID) name, if the requested phone number has been ported; otherwise, the name of carrier who owns the phone number block example: Telnyx/4 type: type: string description: A phone number type that identifies the type of service associated with the requested phone number enum: - fixed line - mobile - voip - fixed line or mobile - toll free - premium rate - shared cost - personal number - pager - uan - voicemail - unknown example: voip error_code: type: - string - 'null' description: Unused example: null normalized_carrier: type: string description: If known to Telnyx and applicable, the primary network carrier. example: AT&T CarrierApprovalResponse: type: object additionalProperties: false properties: approval_id: type: string format: uuid scope_type: $ref: '#/components/schemas/CarrierApprovalScope' status: $ref: '#/components/schemas/CarrierApprovalStatus' carrier: type: - string - 'null' submitted_at: type: - string - 'null' format: date-time approved_at: type: - string - 'null' format: date-time rejected_reason: type: - string - 'null' required: - approval_id - scope_type - status - carrier - submitted_at - approved_at - rejected_reason example: approval_id: 33333333-3333-4333-8333-333333333333 scope_type: hub status: SUBMITTED carrier: null submitted_at: '2026-08-10T12:00:00Z' approved_at: null rejected_reason: null CarrierApprovalScope: type: string enum: - carrier - hub - bot CarrierApprovalStatus: type: string enum: - PENDING - SUBMITTED - APPROVED - REJECTED CdrAvailableFieldsResponse: type: object properties: Interaction Data: type: array description: Fields related to call interaction and basic call information items: type: string example: - origination_number - terminating_number - start_timestamp_utc - start_timestamp - answer_timestamp - end_timestamp - direction Number Information: type: array description: Geographic and routing information for phone numbers items: type: string example: - origination_city - origination_state - origination_lata - origination_country - terminating_city - terminating_state Telephony Data: type: array description: Technical telephony and call control information items: type: string example: - route - connection_id - hangup_code - pdd - tags - sip_call_id - mos Billing: type: array description: Cost and billing related information items: type: string example: - billable_time - cost - rate - billing_group_id description: Available CDR report fields grouped by category CdrDeleteDetailReportResponse: type: object properties: data: $ref: '#/components/schemas/CdrDetailedReqResponse' CdrDeleteUsageReportResponse: type: object properties: data: $ref: '#/components/schemas/CdrUsageReportResponseLegacy' CdrDetailedReqResponse: type: object properties: id: type: string description: Unique identifier for the report example: 123e4567-e89b-12d3-a456-426614174000 start_time: type: string description: Start time in ISO format example: '2024-02-01T00:00:00Z' end_time: type: string description: End time in ISO format example: '2024-02-12T23:59:59Z' call_types: type: array description: List of call types (Inbound = 1, Outbound = 2) items: type: integer description: Call type value format: int32 record_types: type: array description: List of record types (Complete = 1, Incomplete = 2, Errors = 3) example: - 1 - 2 items: type: integer description: Record type value format: int32 connections: type: array description: List of connections example: - 123 - 456 items: type: integer description: List of connections format: int64 report_name: type: string description: Name of the report example: My Report status: type: integer description: Status of the report (Pending = 1, Complete = 2, Failed = 3, Expired = 4) format: int32 example: 1 report_url: type: string description: URL to download the report filters: type: array description: List of filters items: $ref: '#/components/schemas/Filter' created_at: type: string description: Creation date of the report example: '2024-02-12T14:00:00Z' updated_at: type: string description: Last update date of the report example: '2024-02-12T14:05:00Z' timezone: type: string description: Timezone for the report source: type: string description: 'Source of the report. Valid values: calls (default), call-control, fax-api, webrtc' retry: type: integer description: Number of retries format: int32 managed_accounts: type: array description: List of managed accounts items: type: string format: uuid example: - f47ac10b-58cc-4372-a567-0e02b2c3d479 - 6ba7b810-9dad-11d1-80b4-00c04fd430c8 record_type: type: string example: cdr_detailed_report description: Response object for CDR detailed report CdrDetailedRequest: required: - start_time - end_time type: object properties: start_time: type: string description: Start time in ISO format format: date-time example: '2024-02-01T00:00:00Z' end_time: type: string description: End time in ISO format format: date-time example: '2024-02-12T23:59:59Z' timezone: type: string description: Timezone for the report example: UTC call_types: type: array description: List of call types to filter by (Inbound = 1, Outbound = 2) items: type: integer format: int32 example: - 1 - 2 record_types: type: array description: List of record types to filter by (Complete = 1, Incomplete = 2, Errors = 3) items: type: integer format: int32 example: - 1 - 2 connections: type: array description: List of connections to filter by items: type: integer format: int64 example: - 123 - 456 report_name: type: string description: Name of the report example: My CDR Report source: type: string description: 'Source of the report. Valid values: calls (default), call-control, fax-api, webrtc' example: calls include_all_metadata: type: boolean description: Whether to include all metadata example: true filters: type: array description: List of filters to apply items: $ref: '#/components/schemas/Filter' fields: type: array description: Set of fields to include in the report items: type: string example: - call_leg_id - start_time - end_time managed_accounts: type: array description: List of managed accounts to include items: type: string format: uuid example: - f47ac10b-58cc-4372-a567-0e02b2c3d479 - 6ba7b810-9dad-11d1-80b4-00c04fd430c8 select_all_managed_accounts: type: boolean description: Whether to select all managed accounts example: false description: Request object for CDR detailed report CdrGetDetailReportByIdResponse: type: object properties: data: $ref: '#/components/schemas/CdrDetailedReqResponse' CdrGetDetailReportResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CdrDetailedReqResponse' meta: $ref: '#/components/schemas/batch-csv_PaginationMeta_705dfa7312' CdrGetSyncUsageReportResponse: type: object properties: data: $ref: '#/components/schemas/CdrUsageReportResponse' CdrGetUsageReportByIdResponse: type: object properties: data: $ref: '#/components/schemas/CdrUsageReportResponseLegacy' CdrGetUsageReportsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CdrUsageReportResponseLegacy' meta: $ref: '#/components/schemas/standard_PaginationMeta' CdrPostDetailReportResponse: type: object properties: data: $ref: '#/components/schemas/CdrDetailedReqResponse' CdrPostUsageReportResponse: type: object properties: data: $ref: '#/components/schemas/CdrUsageReportResponseLegacy' CdrUsageReportResponse: type: object properties: id: type: string description: Identifies the resource format: uuid start_time: type: string format: date-time example: '2018-02-02T22:25:27.521Z' end_time: type: string format: date-time example: '2018-02-02T22:25:27.521Z' connections: type: array example: - 1234567890 - 9876543210 items: type: integer format: int64 aggregation_type: type: string enum: - NO_AGGREGATION - CONNECTION - TAG - BILLING_GROUP status: type: string enum: - PENDING - COMPLETE - FAILED - EXPIRED report_url: type: string example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv result: type: object additionalProperties: true created_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' updated_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' record_type: type: string example: cdr_usage_report product_breakdown: type: string enum: - NO_BREAKDOWN - DID_VS_TOLL_FREE - COUNTRY - DID_VS_TOLL_FREE_PER_COUNTRY CdrUsageReportResponseLegacy: type: object properties: id: type: string description: Identifies the resource format: uuid start_time: type: string format: date-time example: '2018-02-02T22:25:27.521Z' end_time: type: string format: date-time example: '2018-02-02T22:25:27.521Z' connections: uniqueItems: true type: array example: - '1234567890' - '9876543210' items: type: string aggregation_type: type: integer description: 'Aggregation type: All = 0, By Connections = 1, By Tags = 2, By Billing Group = 3' format: int32 status: type: integer description: 'Status of the report: Pending = 1, Complete = 2, Failed = 3, Expired = 4' format: int32 report_url: type: string example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv result: type: object created_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' updated_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' record_type: type: string example: cdr_usage_report product_breakdown: type: integer description: 'Product breakdown type: No breakdown = 0, DID vs Toll-free = 1, Country = 2, DID vs Toll-free per Country = 3' format: int32 description: Legacy V2 CDR usage report response ChatCompletionRequest: properties: messages: items: $ref: '#/components/schemas/ChatCompletionSystemMessageParam' type: array example: - role: system content: You are a friendly chatbot. - role: user content: Hello, world! description: A list of the previous chat messages for context. model: type: string default: meta-llama/Meta-Llama-3.1-8B-Instruct description: The language model to chat with. service_tier: type: string description: The service tier to use for this request. Supported values vary by model; use `GET /v2/ai/openai/models` and inspect the model's `service_tiers` field. If omitted, Telnyx-hosted models use `default`. region: type: string enum: - USA - EU - AUS - UAE description: 'Optional data-residency region the request should be served from, using the same vocabulary as your account''s Data Locality setting. Behavior depends on `mode`. Supported for Telnyx-hosted models only: a request routed to an external provider never passes through Telnyx model routing, so a region cannot be enforced for it. Omit for today''s latency-based routing.' mode: type: string enum: - preferred - strict default: preferred description: 'How strictly `region` is applied. `preferred` (the default when `region` is set) tries that region first and falls back to another when the model cannot be served there, so a request that would have succeeded still succeeds. `strict` pins the request: it is served from that region or it fails with a 422, never redirected to another region. Requires `region`.' api_key_ref: type: string description: If you are using an external inference provider like xAI or OpenAI, this field allows you to pass along a reference to your API key. After creating an [integration secret](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for you API key, pass the secret's `identifier` in this field. stream: type: boolean default: false description: Whether or not to stream data-only server-sent events as they become available. temperature: type: number default: 0.1 description: Adjusts the "creativity" of the model. Lower values make the model more deterministic and repetitive, while higher values make the model more random and creative. max_tokens: type: - integer - 'null' description: Maximum number of completion (output) tokens, including reasoning and answer tokens combined. An omitted or null limit defaults to 8192 unless the model is excluded from that default; excluded models leave the limit to the serving engine. Explicit values and applied defaults are clamped to the model's max_completion_tokens metadata when that ceiling is set (see GET /v2/ai/openai/models). An omitted limit on an excluded model remains unset even when metadata declares a ceiling. Input and output together must fit the model's context window. Set an explicit limit when a bounded generation budget is required. For current Telnyx-hosted models, omitted or null limits default to 8192 for `zai-org/GLM-5.3`, `zai-org/GLM-5.3-Flash` and `deepseek-ai/DeepSeek-V4.1-Flash`. The hosted exclusions are `moonshotai/Kimi-K3`, `moonshotai/Kimi-K2.6`, `moonshotai/Kimi-K2.5`, `zai-org/GLM-5.2`, `zai-org/GLM-5.1-FP8`, `MiniMaxAI/MiniMax-M3-MXFP8`, `MiniMaxAI/MiniMax-M2.7`, `Qwen/Qwen3.8-27B`, `Qwen/Qwen3-235B-A22B`, `deepseek-ai/DeepSeek-V4-Flash-0731`, `meta-llama/Llama-3.3-70B-Instruct`, `meta-llama/Meta-Llama-3.1-70B-Instruct`, `meta-llama/Meta-Llama-3.1-8B-Instruct` and `google/gemma-2b-it`. Legacy external and fine-tuned model IDs can also bypass the default; model discovery reports completion ceilings, not whether this default applies. Set an explicit limit for predictable behavior across models. tools: items: oneOf: - $ref: '#/components/schemas/ChatCompletionToolParam' - $ref: '#/components/schemas/Retrieval' type: array description: The `function` tool type follows the same schema as the [OpenAI Chat Completions API](https://platform.openai.com/docs/api-reference/chat). The `retrieval` tool type is unique to Telnyx. You may pass a list of [embedded storage buckets](https://developers.telnyx.com/api-reference/embeddings/embed-documents) for retrieval-augmented generation. tool_choice: type: string enum: - none - auto - required response_format: description: Controls the format of the model output. `json_object` guarantees valid JSON output without defining a schema; `json_schema` constrains the output to the JSON schema you supply via the `json_schema` property and is the supported way to get guaranteed structured output on Telnyx-hosted models. $ref: '#/components/schemas/ChatCompletionResponseFormatParam' min_p: type: number description: This is an alternative to `top_p` that [many prefer](https://github.com/huggingface/transformers/issues/27670). Must be in [0, 1]. n: type: number description: This will return multiple choices for you instead of a single chat completion. use_beam_search: type: boolean default: false description: Setting this to `true` will allow the model to [explore more completion options](https://huggingface.co/blog/how-to-generate#beam-search). This is not supported by OpenAI. best_of: type: integer description: This is used with `use_beam_search` to determine how many candidate beams to explore. length_penalty: type: number default: 1 description: This is used with `use_beam_search` to prefer shorter or longer completions. early_stopping: type: boolean default: false description: This is used with `use_beam_search`. If `true`, generation stops as soon as there are `best_of` complete candidates; if `false`, a heuristic is applied and the generation stops when is it very unlikely to find better candidates. logprobs: type: boolean default: false description: Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`. top_logprobs: type: integer description: This is used with `logprobs`. An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability. frequency_penalty: type: number default: 0 description: Higher values will penalize the model from repeating the same output tokens. presence_penalty: type: number default: 0 description: Higher values will penalize the model from repeating the same output tokens. top_p: type: number description: An alternative or complement to `temperature`. This adjusts how many of the top possibilities to consider. stop: description: Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence. oneOf: - type: string - type: array items: type: string maxItems: 4 seed: type: integer description: If specified, the system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result. enable_thinking: type: boolean default: true description: Whether to enable the thinking/reasoning phase for models that support it (e.g., QwQ, Qwen3). When set to false, the model will skip the internal reasoning step and respond directly, which can reduce latency. Defaults to true. reasoning_effort: type: string enum: - none - minimal - low - medium - high - xhigh - max description: 'Controls the reasoning effort for models that support it. When set, the model spends more or less compute on internal reasoning before generating its response. Supported values: none, minimal, low, medium, high, xhigh, max. Not all models support all values; unsupported values are rejected with a 400 error. When omitted, reasoning models use their default effort level.' type: object required: - messages title: ChatCompletionRequest ChatCompletionResponseFormatParam: description: Output format for the model response. `text` returns plain text, `json_object` enables JSON mode (valid JSON output without a schema), and `json_schema` constrains the output to a schema you supply. For guaranteed schema-conformant structured output on Telnyx-hosted models, use `json_schema`. oneOf: - $ref: '#/components/schemas/ResponseFormatText' - $ref: '#/components/schemas/ResponseFormatJsonObject' - $ref: '#/components/schemas/ResponseFormatJsonSchemaParam' title: ChatCompletionResponseFormatParam ChatCompletionSystemMessageParam: type: object properties: content: oneOf: - title: Content String type: string - title: Text and Image Array type: array items: type: object properties: type: type: string enum: - text - image_url text: type: string image_url: type: string required: - type additionalProperties: false role: type: string enum: - system - user - assistant - tool required: - content - role title: ChatCompletionSystemMessageParam ChatCompletionToolParam: properties: type: type: string enum: - function function: $ref: '#/components/schemas/FunctionDefinition' type: object required: - function - type title: Function CheckAvailabilityTool: properties: type: type: string enum: - check_availability check_availability: $ref: '#/components/schemas/CheckAvailabilityToolParams' type: object required: - type - check_availability title: CheckAvailabilityTool CheckAvailabilityToolParams: properties: event_type_id: type: integer description: Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/slots/get-available-slots#parameter-event-type-id) api_key_ref: type: string description: Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your Cal.com API key. example: my_calcom_api_key type: object required: - event_type_id - api_key_ref title: CheckAvailabilityToolParams ChildRelationshipInfo: type: object required: - relationship_type - via - cost_rollup - traversal_enabled - description - child_product - child_event - child_record_type properties: relationship_type: type: string via: $ref: '#/components/schemas/MetadataFieldMapping' cost_rollup: type: boolean traversal_enabled: type: boolean description: type: string child_product: type: string child_event: type: string child_record_type: type: string CivicAddress: type: object title: Civic Address properties: id: $ref: '#/components/schemas/UUID' record_type: type: string description: Identifies the type of the resource. example: civic_address city_or_town: type: string example: Chicago city_or_town_alias: type: string company_name: type: string example: Telnyx country: type: string example: US country_or_district: type: string example: US default_location_id: type: string format: uuid description: Identifies what is the default location in the list of locations. description: type: string example: Texas Office house_number: type: string example: '600' house_number_suffix: type: string postal_or_zip_code: type: string example: '78701' state_or_province: type: string example: TX street_name: type: string example: Congress street_suffix: type: string example: St locations: type: array items: $ref: '#/components/schemas/Location' example: id: 07a4dc5d-9b3b-4ba2-88a4-6ba172316c65 record_type: civic_address city_or_town: Austin city_or_town_alias: '' company_name: Telnyx country: US country_or_district: US default_location_id: 18ded4bb-b694-44c1-a89b-a35b7acd4c9e description: Austin Office house_number: '600' house_number_suffix: '' locations: - id: 18ded4bb-b694-44c1-a89b-a35b7acd4c9e additional_info: '' description: Austin Office is_default: true - id: d420a57f-c4ae-4697-87e1-fbefd9e86f72 additional_info: 14th Floor description: '' is_default: false postal_or_zip_code: '78701' state_or_province: TX street_name: Congress Street street_suffix: '' Clause: properties: attribute: type: string title: Attribute description: Attribute name from the routing context operator: $ref: '#/components/schemas/Operator' description: Match operator values: items: type: string type: array minItems: 1 title: Values type: object required: - attribute - operator - values title: Clause description: 'A single attribute/operator/values check. A clause matches when the routing context''s value for ``attribute`` satisfies ``operator`` against any of ``values``.' ClientSideTool: title: ClientSideTool type: object properties: type: type: string enum: - client_side_tool shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true client_side_tool: $ref: '#/components/schemas/ClientSideToolParams' required: - type - client_side_tool ClientSideToolParams: title: ClientSideToolParams type: object properties: name: type: string description: The name of the tool. description: type: string description: The description of the tool. parameters: description: The parameters the tool accepts, described as a JSON Schema object. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format type: object properties: properties: description: The properties of the parameters. type: object additionalProperties: true required: description: The required properties of the parameters. type: array items: type: string type: type: string enum: - object example: properties: age: description: The age of the customer. type: integer location: description: The location of the customer. type: string required: - age - location type: object required: - name - description - parameters ClientStateUpdateRequest: type: object title: Update client state Request required: - client_state properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d ClientTextFrame: type: object description: Client-to-server frame containing text to synthesize. required: - text properties: text: type: string description: Text to convert to speech. Send `" "` (single space) as an initial handshake with optional `voice_settings`. Subsequent messages contain the actual text to synthesize. voice_settings: type: object description: 'Provider-specific voice settings sent with the initial handshake. Contents vary by provider — e.g. `{"speed": 1.2}` for Minimax, `{"voice_speed": 1.5}` for Telnyx.' additionalProperties: true force: type: boolean description: When `true`, stops the current synthesis worker and starts a new one. Used to interrupt speech mid-stream and begin synthesizing new text. examples: - text: ' ' voice_settings: voice_speed: 1.2 - text: Hello, welcome to Telnyx text to speech. - text: New text after interruption. force: true CloudflareSyncStatus: title: CloudflareSyncStatus enum: - pending - added type: string description: An enumeration. CloudfsFilesystem: type: object description: A CloudFS filesystem, including its metadata credential. This shape is returned only by create and rotate-meta-token. properties: record_type: type: string example: cloudfs id: type: string format: uuid example: 550e8400-e29b-41d4-a716-446655440000 name: type: string example: agent-fs status: $ref: '#/components/schemas/CloudfsFilesystemStatus' meta_url: type: string description: 'PostgreSQL connection URL for the filesystem''s metadata database. In create and rotate-meta-token responses it embeds the metadata token as the password: `postgres://:@us-east-1.telnyxcloudfs.com:5432/?sslmode=require` (the example below is shown without the credential; the actual response includes it). Pass it to `juicefs mount`: the storage configuration is baked in at provisioning, so the metadata URL is all a client needs to mount the filesystem.' example: postgres://fs_0123456789abcdef@us-east-1.telnyxcloudfs.com:5432/fs_0123456789abcdef?sslmode=require meta_token: type: string description: Metadata access token, in cleartext. Returned only by create and rotate-meta-token and not retrievable afterwards — store it securely. example: cloudfs_tok_0123456789abcdef0123456789abcdef s3_endpoint: type: string description: URL of the Telnyx Cloud Storage endpoint backing this filesystem. example: https://us-east-1.telnyxcloudstorage.com s3_bucket: type: string description: Name of the bucket that stores this filesystem's data. Created during provisioning. example: cloudfs-fs-0123456789abcdef region: type: string example: us-east-1 created_at: type: string format: date-time example: '2026-07-14T21:42:01Z' updated_at: type: string format: date-time example: '2026-07-14T21:42:01Z' CloudfsFilesystemDetail: type: object description: A CloudFS filesystem as returned by get, update, and delete. `meta_url` omits the credential and there is no `meta_token` field — the token is only returned by create and rotate-meta-token. properties: record_type: type: string example: cloudfs id: type: string format: uuid example: 550e8400-e29b-41d4-a716-446655440000 name: type: string example: agent-fs status: $ref: '#/components/schemas/CloudfsFilesystemStatus' meta_url: type: string description: PostgreSQL connection URL for the filesystem's metadata database, without the credential. Combine it with your stored metadata token, or issue a new token with rotate-meta-token. example: postgres://fs_0123456789abcdef@us-east-1.telnyxcloudfs.com:5432/fs_0123456789abcdef?sslmode=require s3_endpoint: type: string description: URL of the Telnyx Cloud Storage endpoint backing this filesystem. example: https://us-east-1.telnyxcloudstorage.com s3_bucket: type: string description: Name of the bucket that stores this filesystem's data. Created during provisioning. example: cloudfs-fs-0123456789abcdef region: type: string example: us-east-1 error: type: string description: Explanation of the most recent failed lifecycle action. Present only when the filesystem is in a `failed` state. example: failed to create storage bucket created_at: type: string format: date-time example: '2026-07-14T21:42:01Z' updated_at: type: string format: date-time example: '2026-07-14T21:42:01Z' CloudfsFilesystemDetailResponseWrapper: type: object properties: data: $ref: '#/components/schemas/CloudfsFilesystemDetail' CloudfsFilesystemListItem: type: object description: A CloudFS filesystem as returned in list results. Connection details (`meta_url`, `meta_token`) are omitted — retrieve the filesystem by ID for its redacted `meta_url`. properties: record_type: type: string example: cloudfs id: type: string format: uuid example: 550e8400-e29b-41d4-a716-446655440000 name: type: string example: agent-fs status: $ref: '#/components/schemas/CloudfsFilesystemStatus' s3_endpoint: type: string description: URL of the Telnyx Cloud Storage endpoint backing this filesystem. example: https://us-east-1.telnyxcloudstorage.com s3_bucket: type: string description: Name of the bucket that stores this filesystem's data. Created during provisioning. example: cloudfs-fs-0123456789abcdef region: type: string example: us-east-1 created_at: type: string format: date-time example: '2026-07-14T21:42:01Z' updated_at: type: string format: date-time example: '2026-07-14T21:42:01Z' CloudfsFilesystemListResponseWrapper: type: object properties: data: type: array items: $ref: '#/components/schemas/CloudfsFilesystemListItem' meta: $ref: '#/components/schemas/CloudfsListMeta' CloudfsFilesystemResponseWrapper: type: object properties: data: $ref: '#/components/schemas/CloudfsFilesystem' CloudfsFilesystemStatus: type: string description: 'Lifecycle status of the filesystem. `ready` means it is fully provisioned and usable. `needs_format` means the storage bucket and metadata database were provisioned but the filesystem has not yet been formatted — run `juicefs format` with the filesystem''s `meta_url` before mounting. `failed` means the last lifecycle action failed — see the filesystem''s `error` message. `deleted` appears only in the delete response: deleted filesystems are excluded from list results and return a `404` on retrieval.' enum: - provisioning - ready - needs_format - deleting - failed - deleted example: ready CloudfsListCursors: type: object description: Opaque cursors for the adjacent pages. Empty when there are no adjacent pages. properties: after: type: string description: Cursor for the next page; pass it as `page[after]`. Omitted on the last page. before: type: string description: Cursor for the previous page; pass it as `page[before]`. Omitted on the first page. CloudfsListMeta: type: object properties: cursors: $ref: '#/components/schemas/CloudfsListCursors' next: type: string description: Relative URL (path and query) of the next page. Omitted when there are no further results. previous: type: string description: Relative URL (path and query) of the previous page. Omitted on the first page. ClusterNode: properties: filename: type: string description: The corresponding source file of your embedded storage bucket that the node is from. text: type: string description: The text of the node. type: object required: - filename - text title: ClusterNode ClusteringRequestInfo: properties: task_id: type: string status: $ref: '#/components/schemas/TaskStatus' bucket: type: string created_at: type: string format: date-time finished_at: type: string format: date-time min_cluster_size: type: integer min_subcluster_size: type: integer type: object required: - task_id - status - bucket - created_at - finished_at - min_cluster_size - min_subcluster_size title: ClusteringRequestInfo ClusteringRequestInfoData: properties: data: items: $ref: '#/components/schemas/ClusteringRequestInfo' type: array meta: $ref: '#/components/schemas/Meta' type: object required: - data - meta title: ClusteringRequestInfoData ClusteringStatusResponse: properties: status: $ref: '#/components/schemas/TaskStatus' bucket: type: string clusters: items: $ref: '#/components/schemas/RecursiveCluster' type: array type: object required: - status - bucket - clusters title: ClusteringStatusResponse ClusteringStatusResponseData: properties: data: $ref: '#/components/schemas/ClusteringStatusResponse' type: object required: - data title: ClusteringStatusResponseData CnamListing: description: The CNAM listing settings for a phone number. type: object properties: cnam_listing_enabled: type: boolean default: false description: Enables CNAM listings for this number. Requires cnam_listing_details to also be set. cnam_listing_details: type: string description: The CNAM listing details for this number. Must be alphanumeric characters or spaces with a maximum length of 15. Requires cnam_listing_enabled to also be set to true. example: cnam_listing_enabled: true cnam_listing_details: example Collection: type: object properties: uuid: type: string format: uuid example: 6a09ccbd-8f9b-4c3a-9b0e-2f1d3c4b5a6e slug: type: string example: support-transcripts record_type: type: string description: Identifies the record type. Always `ai_collection`. example: ai_collection name: type: string example: Support Transcripts description: type: string example: All customer support voice transcripts. status: type: string example: ready sources: type: array items: $ref: '#/components/schemas/collections_Source' settings: $ref: '#/components/schemas/RetrievalSettingsWrapper' created_at: type: string format: date-time example: '2026-08-04T12:00:00Z' updated_at: type: string format: date-time example: '2026-08-04T12:00:00Z' CollectionDocumentRecord: type: object properties: id: type: string record_id: type: string record_type: type: string description: The source record kind this chunk came from (e.g. `voice`, `meeting_bot`, `message`). example: voice chunk_index: type: integer chunk_total: type: integer text: type: string score: type: number format: float description: Relevance score (higher = more relevant) for ranked search. `0.0` for plain catalog listings (when `query` is omitted). region: type: string user_id: type: string organization_id: type: string record_created_at: type: string format: date-time ingested_at: type: string format: date-time metadata: type: object additionalProperties: true CollectionEnvelope: type: object properties: data: $ref: '#/components/schemas/Collection' CollectionListEnvelope: type: object properties: data: type: array items: $ref: '#/components/schemas/Collection' meta: $ref: '#/components/schemas/ListMeta' CollectionSearchMeta: type: object properties: collection_slug: type: string example: support-transcripts searched_sources: type: array items: type: string example: - voice - message retrieval_type: type: string example: vector top_k: type: integer example: 5 total_results: type: integer example: 42 total_pages: type: integer example: 3 page_number: type: integer example: 1 page_size: type: integer example: 20 CollectionSearchResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CollectionDocumentRecord' meta: $ref: '#/components/schemas/CollectionSearchMeta' Comment: properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true body: type: string example: Hi there, .... commenter: type: string example: user@company.com readOnly: true commenter_type: type: string example: user enum: - admin - user readOnly: true comment_record_type: type: string example: sub_number_order enum: - sub_number_order - requirement_group comment_record_id: type: string format: uuid example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 read_at: type: string format: date-time description: An ISO 8901 datetime string for when the comment was read. example: '2018-01-01T00:00:00.000000Z' readOnly: true created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the comment was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the comment was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true type: object CommentList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/DirComment' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' CommentType: type: string enum: - vetting_comment - rejection_reason - internal_note - notification - status_update - customer_inquiry - admin_response description: Comment categorisation. Customers post `customer_inquiry`. The Telnyx team posts `vetting_comment`, `rejection_reason`, `notification`, `status_update`, or `admin_response`. `internal_note` is filtered out of customer-visible responses. CommentWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/DirComment' ComparativeLine: type: object properties: type: type: string enum: - comparative example: comparative name: type: string description: Service name example: Local DIDs alias: type: string description: Service alias example: local new_this_month: $ref: '#/components/schemas/MonthDetail' existing_this_month: $ref: '#/components/schemas/MonthDetail' required: - type - name - alias - new_this_month - existing_this_month ComparisonExpression: description: 'Compare two sub-expressions with a relational or membership operator. Evaluates to a boolean. Used in edge conditions to gate transitions on runtime values, e.g. `user_age >= 18` or `tier == "gold"`.' example: left: name: user_age type: variable op: '>=' right: type: number_literal value: 18 type: comparison properties: left: $ref: '#/components/schemas/Expression' op: description: Relational/membership operator. `contains` / `not_contains` apply to strings (substring) and arrays (membership). enum: - == - '!=' - < - <= - '>' - '>=' - contains - not_contains title: Op type: string right: $ref: '#/components/schemas/Expression' type: const: comparison title: Type type: string required: - type - op - left - right title: ComparisonExpression type: object CompleteOTAUpdate: type: object title: OTAUpdate description: This object represents an Over the Air (OTA) update request. It allows tracking the current status of a operation that apply settings in a particular SIM card.

properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string example: ota_update readOnly: true sim_card_id: type: string format: uuid description: The identification UUID of the related SIM card resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 type: type: string description: Represents the type of the operation requested. This will relate directly to the source of the request. enum: - sim_card_network_preferences example: sim_card_network_preferences status: type: string enum: - in-progress - completed - failed example: in-progress settings: type: object description: A JSON object representation of the operation. The information present here will relate directly to the source of the OTA request. properties: mobile_network_operators_preferences: $ref: '#/components/schemas/MobileNetworkOperatorsPreferencesResponse' created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' example: created_at: '2018-02-02T22:25:27.521Z' id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: ota_update settings: mobile_network_operators_preferences: - mobile_network_operator_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 mobile_network_operator_name: AT&T Mobility (USACG) priority: 0 sim_card_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 status: in-progress type: sim_card_network_preferences updated_at: '2018-02-02T22:25:27.521Z' Conference: type: object title: Conference required: - record_type - id - name - created_at - expires_at properties: record_type: type: string enum: - conference example: conference id: type: string description: Uniquely identifies the conference example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: type: string description: Name of the conference example: All hands meeting created_at: type: string description: ISO 8601 formatted date of when the conference was created example: '2019-01-23T18:10:02.574Z' expires_at: type: string description: ISO 8601 formatted date of when the conference will expire example: '2019-01-23T18:10:02.574Z' updated_at: type: string description: ISO 8601 formatted date of when the conference was last updated example: '2019-01-23T18:10:02.574Z' region: type: string description: Region where the conference is hosted example: sv1 status: type: string enum: - init - in_progress - completed description: Status of the conference example: completed end_reason: type: string enum: - all_left - ended_via_api - host_left - time_exceeded description: Reason why the conference ended example: all_left ended_by: type: object description: IDs related to who ended the conference. It is expected for them to all be there or all be null properties: call_control_id: type: string description: Call Control ID which ended the conference example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ== call_session_id: type: string description: Call Session ID which ended the conference example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 connection_id: type: string description: Identifies the connection associated with the conference example: 3fa85f64-9191-4567-b3fc-2c963f66afa6 example: record_type: conference id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: All hands meeting created_at: '2019-01-23T18:10:02.574Z' expires_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' region: sv1 status: completed end_reason: all_left ended_by: call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ== call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 connection_id: 3fa85f64-9191-4567-b3fc-2c963f66afa6 ConferenceCommandResult: type: object title: Conference Command Result required: - result properties: result: type: string example: ok example: result: ok ConferenceCreated: type: object title: Conference Created example: record_type: event event_type: conference.created id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.created enum: - conference.created description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: Conference ID that the participant joined. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceCreatedEvent: type: object title: Conference Created Event properties: data: $ref: '#/components/schemas/ConferenceCreated' ConferenceDetailRecord: type: object properties: id: type: string description: Conference id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 name: type: string description: Conference name example: My Conference user_id: type: string description: User id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 started_at: type: string description: Conference start time format: date-time example: '2020-07-01T00:00:00-06:00' ended_at: type: string description: Conference end time format: date-time example: '2020-07-01T00:00:00-06:00' expires_at: type: string description: Conference expiry time format: date-time example: '2020-07-01T00:00:00-06:00' region: type: string description: Region where the conference is hosted example: ch1 call_leg_id: type: string description: Telnyx UUID that identifies the conference call leg example: 3ca7bd3d-7d82-4e07-9df4-009123068320 call_session_id: type: string description: Telnyx UUID that identifies with conference call session example: 3ca7bd3d-7d82-4e07-9df4-009123068320 connection_id: type: string description: Connection id example: '1583941447772537867' call_sec: type: integer description: Duration of the conference call in seconds example: 100 participant_count: type: integer description: Number of participants that joined the conference call example: 5 participant_call_sec: type: integer description: Sum of the conference call duration for all participants in seconds example: 100 is_telnyx_billable: type: boolean description: Indicates whether Telnyx billing charges might be applicable example: false record_type: type: string example: conference_detail_record default: conference_detail_record required: - record_type ConferenceEnded: type: object title: Conference Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.ended enum: - conference.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: Conference ID that the participant joined. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. reason: type: string enum: - all_left - host_left - time_exceeded description: Reason the conference ended. example: record_type: event event_type: conference.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' reason: host_left ConferenceEndedEvent: type: object title: Conference Ended Event properties: data: $ref: '#/components/schemas/ConferenceEnded' ConferenceFloorChangedEvent: type: object title: Conference Floor Changed example: record_type: event event_type: conference.floor.changed id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.floor.changed enum: - conference.floor.changed description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call Control ID of the new speaker. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: Call Leg ID of the new speaker. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: Call Session ID of the new speaker. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: Conference ID that had a speaker change event. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceGatherUsingAudioRequest: type: object title: Conference Gather Using Audio Request required: - call_control_id properties: call_control_id: description: Unique identifier and token for controlling the call leg that will receive the gather prompt. type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg audio_url: description: The URL of the audio file to play as the gather prompt. Must be WAV or MP3 format. type: string example: http://example.com/gather_prompt.wav media_name: description: The name of the media file uploaded to the Media Storage API to play as the gather prompt. type: string minimum_digits: description: Minimum number of digits to gather. type: integer default: 1 minimum: 1 example: 1 maximum_digits: description: Maximum number of digits to gather. type: integer default: 128 minimum: 1 example: 10 maximum_tries: description: Maximum number of times to play the prompt if no input is received. type: integer default: 3 minimum: 1 example: 3 timeout_millis: description: Duration in milliseconds to wait for input before timing out. type: integer default: 60000 example: 30000 terminating_digit: description: Digit that terminates gathering. Set to an empty string to disable the terminating digit entirely, so that a digit such as `#` can be collected as input per `valid_digits`. type: string default: '#' example: '#' valid_digits: description: Digits that are valid for gathering. All other digits will be ignored. type: string default: 0123456789#* example: 0123456789 inter_digit_timeout_millis: description: Duration in milliseconds to wait between digits. type: integer default: 5000 example: 3000 initial_timeout_millis: description: Duration in milliseconds to wait for the first digit before timing out. type: integer example: 10000 stop_playback_on_dtmf: description: Whether to stop the audio playback when a DTMF digit is received. type: boolean default: true example: true invalid_audio_url: description: URL of audio file to play when invalid input is received. type: string invalid_media_name: description: Name of media file to play when invalid input is received. type: string gather_id: description: Identifier for this gather command. Will be included in the gather ended webhook. Maximum 100 characters. type: string maxLength: 100 client_state: description: Use this field to add state to every subsequent webhook. Must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg audio_url: http://example.com/gather_prompt.wav minimum_digits: 1 maximum_digits: 4 timeout_millis: 30000 ConferenceHoldRequest: type: object title: Conference Hold Request properties: call_control_ids: description: List of unique identifiers and tokens for controlling the call. When empty all participants will be placed on hold. type: array items: type: string audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played to the participants when they are put on hold. media_name and audio_url cannot be used together in one request. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played to the participants when they are put on hold. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_ids: - v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg audio_url: http://example.com/message.wav ConferenceMuteRequest: type: object title: Conference Mute Request properties: call_control_ids: description: Array of unique identifiers and tokens for controlling the call. When empty all participants will be muted. type: array items: type: string region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_ids: - v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg ConferenceParticipant: type: object title: Conference Participant properties: id: description: Uniquely identifies the participant. type: string call_control_id: description: Unique identifier and token for controlling the participant's call leg. type: string call_leg_id: description: Unique identifier for the call leg. type: string conference_id: description: Unique identifier for the conference. type: string label: description: Label assigned to the participant when joining. type: string status: description: Status of the participant. type: string enum: - joining - joined - left muted: description: Whether the participant is muted. type: boolean on_hold: description: Whether the participant is on hold. type: boolean whisper_call_control_ids: description: List of call control IDs this participant is whispering to. type: array items: type: string created_at: description: Timestamp when the participant joined. type: string format: date-time updated_at: description: Timestamp when the participant was last updated. type: string format: date-time end_conference_on_exit: description: Whether the conference ends when this participant exits. type: boolean soft_end_conference_on_exit: description: Whether the conference soft-ends when this participant exits. type: boolean ConferenceParticipantDetailRecord: type: object properties: id: type: string description: Participant id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 user_id: type: string description: User id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 conference_id: type: string description: Conference id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 joined_at: type: string description: Participant join time format: date-time example: '2020-07-01T00:00:00-06:00' left_at: type: string description: Participant leave time format: date-time example: '2020-07-01T00:00:00-06:00' destination_number: type: string description: Number called by the participant to join the conference example: '+18005550199' originating_number: type: string description: Participant origin number used in the conference call example: '+18005550199' call_leg_id: type: string description: Telnyx UUID that identifies the conference call leg example: 3ca7bd3d-7d82-4e07-9df4-009123068320 call_session_id: type: string description: Telnyx UUID that identifies with conference call session example: 3ca7bd3d-7d82-4e07-9df4-009123068320 call_sec: type: integer description: Duration of the conference call in seconds example: 100 billed_sec: type: integer description: Duration of the conference call for billing purposes example: 120 is_telnyx_billable: type: boolean description: Indicates whether Telnyx billing charges might be applicable example: true rate: type: string description: Currency amount per billing unit used to calculate the Telnyx billing cost example: '0.002' rate_measured_in: type: string description: Billing unit used to calculate the Telnyx billing cost example: minutes cost: type: string description: Currency amount for Telnyx billing cost example: '0.004' currency: type: string description: Telnyx account currency used to describe monetary values, including billing cost example: USD record_type: type: string example: conference_participant_detail_record default: conference_participant_detail_record required: - record_type ConferenceParticipantJoined: type: object title: Conference Participant Joined properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.participant.joined enum: - conference.participant.joined description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: Conference ID that the participant joined. example: record_type: event event_type: conference.participant.joined id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 ConferenceParticipantJoinedEvent: type: object title: Conference Participant Joined Event properties: data: $ref: '#/components/schemas/ConferenceParticipantJoined' ConferenceParticipantLeft: type: object title: Conference Participant Left example: record_type: event event_type: conference.participant.left id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.participant.left enum: - conference.participant.left description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: Conference ID that the participant joined. ConferenceParticipantLeftEvent: type: object title: Conference Participant Left Event properties: data: $ref: '#/components/schemas/ConferenceParticipantLeft' ConferenceParticipantPlaybackEnded: type: object title: Conference Participant Playback Ended example: record_type: event event_type: conference.participant.playback.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.participant.playback.ended enum: - conference.participant.playback.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Participant's call ID used to issue commands via Call Control API. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. media_url: type: string example: http://example.com/audio.wav description: The audio URL being played back, if audio_url has been used to start. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The name of the audio media file being played back, if media_name has been used to start. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceParticipantPlaybackEndedEvent: type: object title: Conference Participant Playback Ended Event properties: data: $ref: '#/components/schemas/ConferenceParticipantPlaybackEnded' ConferenceParticipantPlaybackStarted: type: object title: Conference Participant Playback Started example: record_type: event event_type: conference.participant.playback.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.participant.playback.started enum: - conference.participant.playback.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Participant's call ID used to issue commands via Call Control API. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. media_url: type: string example: http://example.com/audio.wav description: The audio URL being played back, if audio_url has been used to start. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The name of the audio media file being played back, if media_name has been used to start. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceParticipantPlaybackStartedEvent: type: object title: Conference Participant Playback Started Event properties: data: $ref: '#/components/schemas/ConferenceParticipantPlaybackStarted' ConferenceParticipantResource: type: object title: Conference Participant Resource properties: data: $ref: '#/components/schemas/ConferenceParticipant' ConferenceParticipantSpeakEnded: type: object title: Conference Participant Speak Ended example: record_type: event event_type: conference.participant.speak.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.participant.speak.ended enum: - conference.participant.speak.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Participant's call ID used to issue commands via Call Control API. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceParticipantSpeakEndedEvent: type: object title: Conference Participant Speak Ended Event properties: data: $ref: '#/components/schemas/ConferenceParticipantSpeakEnded' ConferenceParticipantSpeakStarted: type: object title: Conference Participant Speak Started example: record_type: event event_type: conference.participant.speak.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.participant.speak.started enum: - conference.participant.speak.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Participant's call ID used to issue commands via Call Control API. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceParticipantSpeakStartedEvent: type: object title: Conference Participant Speak Started Event properties: data: $ref: '#/components/schemas/ConferenceParticipantSpeakStarted' ConferencePlayRequest: type: object title: Conference Play Request properties: audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played back in the conference. media_name and audio_url cannot be used together in one request. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played back in the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. loop: description: The number of times the audio file should be played. If supplied, the value must be an integer between 1 and 100, or the special string `infinity` for an endless loop. example: infinity default: 1 $ref: '#/components/schemas/Loopcount' call_control_ids: description: List of call control ids identifying participants the audio file should be played to. If not given, the audio file will be played to the entire conference. type: array items: type: string region: $ref: '#/components/schemas/ConferenceRegion' example: audio_url: http://www.example.com/sounds/greeting.wav ConferencePlaybackEnded: type: object title: Conference Playback Ended example: record_type: event event_type: conference.playback.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.playback.ended enum: - conference.playback.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. media_url: type: string example: http://example.com/audio.wav description: The audio URL being played back, if audio_url has been used to start. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The name of the audio media file being played back, if media_name has been used to start. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferencePlaybackEndedEvent: type: object title: Conference Playback Ended Event properties: data: $ref: '#/components/schemas/ConferencePlaybackEnded' ConferencePlaybackStarted: type: object title: Conference Playback Started example: record_type: event event_type: conference.playback.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.playback.started enum: - conference.playback.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. media_url: type: string example: http://example.com/audio.wav description: The audio URL being played back, if audio_url has been used to start. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The name of the audio media file being played back, if media_name has been used to start. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferencePlaybackStartedEvent: type: object title: Conference Playback Started Event properties: data: $ref: '#/components/schemas/ConferencePlaybackStarted' ConferenceRecordingResource: type: object title: Conference recording resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ channels: 1 conference_sid: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 duration: 5 media_url: https://www.example.com/download.mp3 sid: 136285da-4b74-46f1-a016-fe2982fa77c3 source: StartConferenceRecordingAPI start_time: Fri, 27 Oct 2023 07:41:58 +0000 status: completed subresource_uris: transcriptions: null uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b call_sid: type: string description: The identifier of the related participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ channels: type: integer description: The number of channels in the recording. example: 1 conference_sid: type: string description: The identifier of the related conference. example: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f date_created: type: string description: The timestamp of when the resource was created. example: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Thu, 15 Jun 2023 09:56:45 +0000 duration: type: integer description: Duratin of the recording in seconds. example: 10 error_code: type: string description: The recording error, if any. media_url: type: string description: The URL to use to download the recording. example: https://www.example.com/download.mp3 sid: type: string description: The unique identifier of the recording. example: 136285da-4b74-46f1-a016-fe2982fa77c3 source: type: string description: How the recording was started. example: StartConferenceRecordingAPI enum: - DialVerb - Conference - OutboundAPI - Trunking - RecordVerb - StartCallRecordingAPI - StartConferenceRecordingAPI start_time: type: string description: The timestamp of when the recording was started. example: Thu, 15 Jun 2023 09:56:45 +0000 status: type: string description: The status of the recording. enum: - processing - absent - completed - deleted example: completed subresource_uris: type: object description: A list of related resources identified by their relative URIs. example: transcriptions: null additionalProperties: true uri: type: string description: The relative URI for this recording. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json ConferenceRecordingResourceIndex: type: object title: Multiple conference recording resources example: participants: [] end: 0 first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20 page: 0 page_size: 20 start: 0 uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20 properties: recordings: type: array items: $ref: '#/components/schemas/ConferenceRecordingResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: 19 first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: 0 page_size: type: integer description: The number of items on the page example: 20 start: type: integer description: The number of the first element on the page, zero-indexed. example: 0 uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=0&PageSize=1 participants: type: array description: List of participant resources. items: type: object example: [] ConferenceRecordingSaved: type: object title: Conference Recording Saved example: record_type: event event_type: conference.recording.saved id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d channels: single conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 connection_id: 7267xxxxxxxxxxxxxx format: mp3 public_recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav recording_ended_at: '2018-02-02T22:20:27.521992Z' recording_id: 4577f9a2-cf0e-44f3-ac57-9f95fb03fa47 recording_started_at: '2021-05-11T10:17:03.692107Z' recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.recording.saved enum: - conference.recording.saved description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Participant's call ID used to issue commands via Call Control API. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. channels: type: string example: single enum: - single - dual description: Whether recording was recorded in `single` or `dual` channel. conference_id: type: string format: uuid example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference that is being recorded. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. format: description: The audio file format used when storing the call recording. Can be either `mp3` or `wav`. type: string enum: - wav - mp3 example: mp3 public_recording_urls: type: object description: Recording URLs in requested format. The URL is valid for as long as the file exists. For security purposes, this feature is activated on a per request basis. Please contact customer support with your Account ID to request activation. properties: mp3: type: - string - 'null' example: http://example.com/recording.mp3 description: Recording URL in requested `mp3` format. wav: type: - string - 'null' example: http://example.com/recording.wav description: Recording URL in requested `wav` format. recording_ended_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when recording ended. recording_id: type: string format: uuid example: 4577f9a2-cf0e-44f3-ac57-9f95fb03fa47 description: ID of the conference recording. recording_started_at: type: string format: date-time example: '2018-02-02T22:20:27.521992Z' description: ISO 8601 datetime of when recording started. recording_urls: type: object description: Recording URLs in requested format. These URLs are valid for 10 minutes. After 10 minutes, you may retrieve recordings via API using Reports -> Call Recordings documentation, or via Mission Control under Reporting -> Recordings. properties: mp3: type: - string - 'null' example: http://example.com/recording.mp3 description: Recording URL in requested `mp3` format. wav: type: - string - 'null' example: http://example.com/recording.wav description: Recording URL in requested `wav` format. ConferenceRecordingSavedEvent: type: object title: Conference Recording Saved Event properties: data: $ref: '#/components/schemas/ConferenceRecordingSaved' ConferenceRegion: description: Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US). example: US type: string enum: - Australia - Europe - Middle East - US ConferenceResource: type: object title: Conference resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 api_version: v2/texml date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 friendly_name: weekly_review_call region: dc2 sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 status: in-progress subresource_uris: participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b api_version: type: string description: The version of the API that was used to make the request. example: v2/texml call_sid_ending_conference: type: string description: Caller ID, if present. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ date_created: type: string description: The timestamp of when the resource was created. example: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Thu, 15 Jun 2023 09:56:45 +0000 friendly_name: type: string description: A string that you assigned to describe this conference room. example: weekly_review_call reason_conference_ended: type: string description: The reason why a conference ended. When a conference is in progress, will be null. enum: - participant-with-end-conference-on-exit-left - last-participant-left - conference-ended-via-api - time-exceeded example: time-exceeded region: type: string description: A string representing the region where the conference is hosted. example: dc2 sid: type: string description: The unique identifier of the conference. example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 status: type: string description: The status of this conference. enum: - init - in-progress - completed example: in-progress subresource_uris: type: object description: A list of related resources identified by their relative URIs. example: participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json additionalProperties: true uri: type: string description: The relative URI for this conference. example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json ConferenceResourceIndex: type: object title: Multiple conference resources example: conferences: [] end: 0 first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ page: 0 page_size: 1 start: 0 uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 properties: conferences: type: array items: $ref: '#/components/schemas/ConferenceResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: 19 first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: 0 page_size: type: integer description: The number of items on the page example: 20 start: type: integer description: The number of the first element on the page, zero-indexed. example: 0 uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 ConferenceSendDTMFRequest: type: object title: Conference Send DTMF Request required: - digits properties: digits: description: 'DTMF digits to send. Valid characters: 0-9, A-D, *, #, w (0.5s pause), W (1s pause).' type: string example: 1234# call_control_ids: description: Array of participant call control IDs to send DTMF to. When empty, DTMF will be sent to all participants. type: array items: type: string example: - v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg duration_millis: description: Duration of each DTMF digit in milliseconds. type: integer minimum: 100 maximum: 500 default: 250 example: 250 client_state: description: Use this field to add state to every subsequent webhook. Must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d example: digits: 1234# duration_millis: 250 ConferenceSid: type: - string - 'null' format: uuid example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 ConferenceSpeakEnded: type: object title: Conference Speak Ended example: record_type: event event_type: conference.speak.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.speak.ended enum: - conference.speak.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceSpeakEndedEvent: type: object title: Conference Speak Ended Event properties: data: $ref: '#/components/schemas/ConferenceSpeakEnded' ConferenceSpeakRequest: type: object title: Conference Speak Request required: - payload - voice properties: call_control_ids: description: Call Control IDs of participants who will hear the spoken text. When empty all participants will hear the spoken text. type: array items: type: string payload: description: The text or SSML to be converted into speech. There is a 3,000 character limit. type: string example: Say this to participants payload_type: description: The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML). default: text type: string enum: - text - ssml example: ssml voice: description: "Specifies the voice used in speech synthesis.\n\n- Define voices using the format `..`.\ \ Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n\ - **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic,\ \ human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available\ \ voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:**\ \ Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`).\ \ For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\ \ Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs..`\ \ (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs,\ \ you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\"\ : \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)\ \ for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n- **Telnyx:** Use\ \ `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed\ \ and other synthesis parameters. `Bayan` provides Arabic (multiple dialects) and English voices (e.g., `Telnyx.Bayan.Ahmed`,\ \ `Telnyx.Bayan.Amanda`). `Sukhan` provides Urdu voices (e.g., `Telnyx.Sukhan.urdu-professor`); `voice_speed`\ \ is not supported.\n- **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`).\ \ Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings`\ \ to configure speed, volume, pitch, and language_boost.\n- **Resemble:** Use `Resemble.Turbo.` (e.g.,\ \ `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate,\ \ and format.\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`,\ \ `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`. Use `voice_settings` to configure `delivery_mode`\ \ (`STABLE`, `BALANCED`, `CREATIVE`), supported by `TTS2` only.\n- **Fish Audio:** Use `FishAudio..`\ \ (e.g., `FishAudio.s2.1-pro.`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish\ \ Voice-Library reference ID.\n- **Soniox:** Use `Soniox..` (e.g., `Soniox.tts-rt-v2.Emma`).\ \ Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices).\ \ Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for\ \ example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n\ - **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:**\ \ Use `Humain.` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`,\ \ `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.\n\n\ For service_level basic, you may define the gender of the speaker (male or female)." type: string example: Telnyx.KokoroTTS.af voice_settings: description: The settings associated with the voice selected oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' - $ref: '#/components/schemas/SonioxVoiceSettings' discriminator: propertyName: type mapping: elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' aws: '#/components/schemas/AWSVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' soniox: '#/components/schemas/SonioxVoiceSettings' language: description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified. type: string enum: - arb - cmn-CN - cy-GB - da-DK - de-DE - en-AU - en-GB - en-GB-WLS - en-IN - en-US - es-ES - es-MX - es-US - fr-CA - fr-FR - hi-IN - is-IS - it-IT - ja-JP - ko-KR - nb-NO - nl-NL - pl-PL - pt-BR - pt-PT - ro-RO - ru-RU - sv-SE - tr-TR example: en-US command_id: description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_ids: - v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg payload: Say this to participants payload_type: text voice: female language: en-US command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 ConferenceSpeakStarted: type: object title: Conference Speak Started example: record_type: event event_type: conference.speak.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: conference.speak.started enum: - conference.speak.started description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. payload: type: object properties: connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. creator_call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session that started the conference. conference_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID of the conference the text was spoken in. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' description: ISO 8601 datetime of when the event occurred. ConferenceSpeakStartedEvent: type: object title: Conference Speak Started Event properties: data: $ref: '#/components/schemas/ConferenceSpeakStarted' ConferenceStopRequest: type: object title: Conference Stop Request properties: call_control_ids: description: List of call control ids identifying participants the audio file should stop be played to. If not given, the audio will be stoped to the entire conference. type: array items: type: string region: $ref: '#/components/schemas/ConferenceRegion' ConferenceUnholdRequest: required: - call_control_ids type: object title: Conference Unhold Request properties: call_control_ids: description: List of unique identifiers and tokens for controlling the call. Enter each call control ID to be unheld. type: array items: type: string region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_ids: - v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg ConferenceUnmuteRequest: type: object title: Conference Unmute Request properties: call_control_ids: description: List of unique identifiers and tokens for controlling the call. Enter each call control ID to be unmuted. When empty all participants will be unmuted. type: array items: type: string region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_ids: - v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg Connection: type: object title: Connection properties: id: type: string description: Identifies the specific resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 x-format: int64 record_type: type: string description: Identifies the type of the resource. example: ip_connection active: type: boolean description: Defaults to true example: true anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: type: string example: string created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' webhook_event_url: description: The URL where webhooks related to this connection will be sent. type: - string - 'null' format: uri default: null example: https://example.com webhook_event_failover_url: description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. type: - string - 'null' format: uri default: '' example: https://failover.example.com webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1 or v2. type: string enum: - '1' - '2' default: '1' example: '1' outbound_voice_profile_id: $ref: '#/components/schemas/connections_OutboundVoiceProfileId' tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 example: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: ip_connection active: true anchorsite_override: Latency connection_name: string created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' outbound_voice_profile_id: '1293384261075731499' ConnectionActive: title: Connection Active type: boolean description: Specifies whether the connection can be used. default: true example: false ConnectionAndroidPushCredentialId: title: Android Push Credential Id type: - string - 'null' description: The uuid of the push credential for Android example: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e default: null ConnectionId: description: The ID of the connection used to send the fax. type: string example: '234423' ConnectionIdCredentials: type: string description: Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource. example: '1234567890' ConnectionIosPushCredentialId: title: Ios Push Credential Id type: - string - 'null' description: The uuid of the push credential for Ios example: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 default: null ConnectionJitterBuffer: type: object description: Configuration options for Jitter Buffer. Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled. You may define min and max values in msec for customized buffering behaviors. Larger values add latency but tolerate more jitter, while smaller values reduce latency but are more sensitive to jitter and reordering. properties: enable_jitter_buffer: type: boolean description: Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled. default: false example: true jitterbuffer_msec_min: type: integer description: The minimum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true. minimum: 40 maximum: 400 default: 60 example: 60 jitterbuffer_msec_max: type: integer description: The maximum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true. minimum: 40 maximum: 400 default: 200 example: 200 ConnectionName: title: Connection Name type: string description: A user-assigned name to help manage the connection. example: office-connection ConnectionNoiseSuppression: type: string description: Controls when noise suppression is applied to calls. When set to 'inbound', noise suppression is applied to incoming audio. When set to 'outbound', it's applied to outgoing audio. When set to 'both', it's applied in both directions. When set to 'disabled', noise suppression is turned off. enum: - inbound - outbound - both - disabled example: both ConnectionNoiseSuppressionDetails: type: object description: Configuration options for noise suppression. These settings are stored regardless of the noise_suppression value, but only take effect when noise_suppression is not 'disabled'. If you disable noise suppression and later re-enable it, the previously configured settings will be used. properties: engine: type: string description: The noise suppression engine to use. 'denoiser' is the default engine. 'deep_filter_net' and 'deep_filter_net_large' are alternative engines with different performance characteristics. Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss') provide advanced noise suppression capabilities. 'quail_voice_focus' provides Quail-based voice focus noise suppression. enum: - denoiser - deep_filter_net - deep_filter_net_large - krisp_viva_tel - krisp_viva_tel_lite - krisp_viva_promodel - krisp_viva_ss - quail_voice_focus default: denoiser example: deep_filter_net attenuation_limit: type: integer description: 'The attenuation limit value for the selected engine. Default values vary by engine: 0 for ''denoiser'', 80 for ''deep_filter_net'', ''deep_filter_net_large'', and all Krisp engines (''krisp_viva_tel'', ''krisp_viva_tel_lite'', ''krisp_viva_promodel'', ''krisp_viva_ss''), 100 for ''quail_voice_focus''.' minimum: 0 maximum: 100 multipleOf: 10 example: 80 ConnectionRtcpSettings: type: object title: Connection RTCP Settings properties: port: enum: - rtcp-mux - rtp+1 default: rtp+1 description: RTCP port by default is rtp+1, it can also be set to rtcp-mux type: string capture_enabled: type: boolean default: false description: Enable the capture and storage of RTCP messages to create QoS reports on the Telnyx Mission Control Portal. example: true report_frequency_secs: type: integer default: 5 description: RTCP reports are sent to customers based on the frequency set. Frequency is in seconds and it can be set to values from 5 to 3000 seconds. example: 10 example: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 ConnectionsCount: title: Connections Count type: object required: - record_type - counts - limits properties: record_type: type: string description: Identifies the type of the resource. example: connections_count counts: type: object description: Counts of the authenticated user's connections, grouped by connection type. Forward-only connections are excluded. required: - ip_connections - credential_connections - uac_connections - fqdn_connections - call_control_applications - texml_applications - third_party_provider_connections - external_connections - fax_connections - mobile_voice_connections - microsoft_teams_sbc_connections - zoom_sbc_connections - operator_connect_connections properties: ip_connections: type: integer description: Number of IP connections. credential_connections: type: integer description: Number of credential connections. uac_connections: type: integer description: Number of UAC connections. fqdn_connections: type: integer description: Number of FQDN connections. call_control_applications: type: integer description: Number of Call Control applications. texml_applications: type: integer description: Number of TeXML applications. third_party_provider_connections: type: integer description: Number of third-party provider connections. external_connections: type: integer description: Number of external connections. fax_connections: type: integer description: Number of Fax applications. mobile_voice_connections: type: integer description: Number of mobile voice (IMS) connections. microsoft_teams_sbc_connections: type: integer description: Number of Microsoft Teams SBC (direct routing) connections. zoom_sbc_connections: type: integer description: Number of Zoom SBC connections. operator_connect_connections: type: integer description: Number of Microsoft Operator Connect connections. limits: type: object description: Connection limits that apply to the user. Contains a single global_limit when a global connection limit applies, or per-type limits (standard_limit, texml_limit and uac_limit) when the user has per-type connection count capabilities. oneOf: - title: Global Connection Limit type: object additionalProperties: false required: - global_limit properties: global_limit: type: integer description: Maximum total number of connections allowed, when a global limit applies. example: 10000 - title: Per-type Connection Limits type: object additionalProperties: false required: - standard_limit - texml_limit - uac_limit properties: standard_limit: type: integer description: Maximum number of standard connections allowed, when per-type limits apply. texml_limit: type: integer description: Maximum number of TeXML applications allowed, when per-type limits apply. uac_limit: type: integer description: Maximum number of UAC connections allowed, when per-type limits apply. ConsentTokenResponse: type: object properties: data: type: object properties: client_id: type: string description: Client ID name: type: string description: Client name requested_scopes: type: array items: type: object properties: id: type: string description: Scope ID name: type: string description: Scope name description: type: string description: Scope description logo_uri: type: - string - 'null' format: uri description: URL of the client logo tos_uri: type: - string - 'null' format: uri description: URL of the client's terms of service policy_uri: type: - string - 'null' format: uri description: URL of the client's privacy policy redirect_uri: type: string format: uri description: The redirect URI for this authorization verified: type: boolean description: Whether the client is verified ConsumedData: type: object title: ConsumedData description: Represents the amount of data consumed. properties: unit: type: string example: MB default: MB amount: type: string example: '2048.1' ContentResult: type: object required: - url properties: url: type: string format: uri description: The source URL. title: type: string description: Page title (if available). html: type: string description: Cleaned HTML content (if `html` format requested; may also be present on freshly crawled pages). markdown: type: string description: Markdown content (if `markdown` format requested). metadata: type: object properties: site_name: type: string description: Site name. Often empty. favicon_url: type: string format: uri description: Favicon URL (if available). additionalProperties: true description: Page metadata (if `metadata` format requested). ContentsRequest: type: object required: - urls properties: urls: type: array items: type: string format: uri minItems: 1 maxItems: 20 description: List of URLs to retrieve content from (max 20 for public API). example: - https://en.wikipedia.org/wiki/Artificial_intelligence formats: type: array items: type: string enum: - html - markdown - metadata maxItems: 3 description: 'Content formats to return. If omitted, `html` and `metadata` are returned by default. Retrieval is best-effort per URL: a format field appears only when that content could be produced, and a freshly crawled page may also include `html` even when not requested.' example: - markdown - metadata crawl_timeout: type: integer minimum: 1 maximum: 60 description: Timeout for crawling each URL, in seconds (1-60). example: 10 max_age: type: - integer - 'null' minimum: 0 description: Maximum age of cached content in seconds. `null` means no limit. example: null ContentsResponse: type: object properties: results: type: array items: $ref: '#/components/schemas/ContentResult' ContestSubmission: type: object description: One round of customer contest evidence on an infringement claim. The aggregated documents across rounds live on the parent claim's `contest_documents`; this submission record carries only the per-round notes and document count. properties: notes: type: string example: We own the trademark outright; our registration precedes the claimant by three years. submitted_at: type: string format: date-time example: '2026-04-22T02:13:06.629473Z' readOnly: true document_count: type: integer minimum: 0 example: 1 readOnly: true Conversation: type: object properties: id: type: string format: uuid example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: type: string example: '' created_at: type: string description: The datetime the conversation was created. format: date-time example: '2025-04-15T13:07:28.764Z' metadata: type: object description: Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers can also add their own. The reserved field `ai_disabled` (boolean) can be set to `true` to prevent AI-generated responses on this conversation. When `ai_disabled` is `true`, calls to the chat endpoint will return a 400 error. Set to `false` or remove the field to re-enable AI responses. This is useful when a human agent needs to take over the conversation mid-stream (e.g., a technician stepping in while AI was messaging a resident). additionalProperties: type: string example: telnyx_conversation_channel: sms telnyx_agent_target: '+13128675309' telnyx_end_user_target: '+13128675309' assistant_id: assistant-123 last_message_at: type: string description: The datetime of the latest message in the conversation. format: date-time example: '2025-04-15T13:07:28.764Z' required: - id - created_at - metadata - last_message_at ConversationChannelType: type: string enum: - phone_call - sms_chat title: ConversationChannelType ConversationFlow: description: Conversation flow as returned by the API. example: edges: - condition: prompt: The caller is asking about a bill or charge. type: llm id: e_intake_to_billing start_node_id: n_intake target: node_id: n_billing type: node - condition: prompt: The caller has explicitly asked for a human. type: llm id: e_intake_to_escalation_assistant start_node_id: n_intake target: assistant_id: assistant-human-handoff position: x: 600 y: 80 type: assistant voice_mode: distinct nodes: - type: prompt id: n_intake instructions: Greet the caller and ask what they're calling about. name: Intake position: x: 120 y: 80 shared_tool_ids: - tool-faq-kb - type: prompt id: n_billing instructions: Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering. instructions_mode: append model: moonshotai/Kimi-K2.6 name: Billing position: x: 420 y: 80 shared_tool_ids: - tool-billing-lookup tools_mode: append start_node_id: n_intake properties: edges: description: Directed transitions between nodes. items: $ref: '#/components/schemas/FlowEdge' title: Edges type: array nodes: description: All nodes in the flow. items: discriminator: mapping: prompt: '#/components/schemas/FlowNode' speak: '#/components/schemas/SpeakNode' tool: '#/components/schemas/ToolNode' propertyName: type oneOf: - $ref: '#/components/schemas/FlowNode' - $ref: '#/components/schemas/ToolNode' - $ref: '#/components/schemas/SpeakNode' title: Nodes type: array start_node_id: description: ID of the node where the conversation begins. title: Start Node Id type: string required: - start_node_id - nodes title: ConversationFlow type: object ConversationFlowReq: description: 'Conversation flow as supplied by API clients (create / update). A directed graph of `FlowNodeReq` connected by `FlowEdge`s. Validation enforces unique node/edge IDs, that `start_node_id` references a real node, and that every edge''s endpoints reference real nodes.' example: edges: - condition: prompt: The caller is asking about a bill or charge. type: llm id: e_intake_to_billing start_node_id: n_intake target: node_id: n_billing type: node - condition: prompt: The caller has explicitly asked for a human. type: llm id: e_intake_to_escalation_assistant start_node_id: n_intake target: assistant_id: assistant-human-handoff position: x: 600 y: 80 type: assistant voice_mode: distinct nodes: - type: prompt id: n_intake instructions: Greet the caller and ask what they're calling about. name: Intake position: x: 120 y: 80 shared_tool_ids: - tool-faq-kb - type: prompt id: n_billing instructions: Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering. instructions_mode: append model: moonshotai/Kimi-K2.6 name: Billing position: x: 420 y: 80 shared_tool_ids: - tool-billing-lookup tools_mode: append start_node_id: n_intake properties: edges: description: Directed transitions between nodes. May be empty for a single-node flow. items: $ref: '#/components/schemas/FlowEdge' title: Edges type: array nodes: description: 'All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node (`type: prompt`), a tool node (`type: tool`), or a speak node (`type: speak`).' items: discriminator: mapping: prompt: '#/components/schemas/FlowNodeReq' tool: '#/components/schemas/ToolNodeReq' speak: '#/components/schemas/SpeakNodeReq' propertyName: type oneOf: - $ref: '#/components/schemas/FlowNodeReq' - $ref: '#/components/schemas/ToolNodeReq' - $ref: '#/components/schemas/SpeakNodeReq' title: Nodes type: array start_node_id: description: ID of the node where the conversation begins. example: n_intake title: Start Node Id type: string required: - start_node_id - nodes title: ConversationFlowReq type: object ConversationHistoryRecord: type: object description: A single search result representing one chunk of a conversation history record. Records are split into chunks of up to 480 tokens with 64-token overlap at ingestion time. required: - id - record_id - chunk_index - chunk_total - text - score - region - user_id - organization_id - record_created_at - ingested_at properties: id: type: string description: Unique chunk identifier. example: rec-001_chunk_0 record_id: type: string description: Identifier of the parent record. Multiple chunks from the same record share this ID. example: rec-001 chunk_index: type: integer description: Zero-based index of this chunk within the parent record. example: 0 chunk_total: type: integer description: Total number of chunks the parent record was split into. example: 3 text: type: string description: The text content of this chunk (up to 480 tokens). example: Customer called regarding a billing discrepancy on their latest invoice. score: type: number format: float description: Cosine similarity score between the query vector and this chunk's vector. Higher values indicate greater semantic relevance. example: 0.92 region: type: string enum: - USA - DEU - AUS - UAE description: The region where this record is stored. example: USA user_id: type: string description: Identifier of the user who owns this record. example: user-123 organization_id: type: string description: Identifier of the organization that owns this record. example: org-456 record_created_at: type: string format: date-time description: When the original record was created (ISO 8601). example: '2026-05-28T12:00:00Z' ingested_at: type: string format: date-time description: When the record was chunked, embedded, and indexed (ISO 8601). example: '2026-05-28T12:01:00Z' metadata: type: object additionalProperties: true default: {} description: Arbitrary metadata attached to the record at ingestion time. Filterable via filter[field]=value query parameters. example: source: call-center language: en ConversationHistoryResponse: type: object description: Search response following the standard Telnyx V2 API format. required: - data - meta properties: data: type: array description: Ranked list of matching text chunks, sorted by cosine similarity score descending. items: $ref: '#/components/schemas/ConversationHistoryRecord' meta: $ref: '#/components/schemas/transcriptions-search_PaginationMeta' ConversationInsight: type: object required: - id - status - created_at - conversation_insights properties: id: type: string description: Unique identifier for the conversation insight. status: type: string enum: - pending - in_progress - completed - failed description: Current status of the insight generation for the conversation. created_at: type: string format: date-time description: Timestamp of when the object was created. conversation_insights: type: array description: List of insights extracted from the conversation. items: type: object required: - result - insight_id properties: result: type: string description: Insight result from the conversation. If the insight has a JSON schema, this will be stringified JSON object. insight_id: type: string description: Unique identifier for the insight configuration. ConversationInsightAggregateResp: properties: data: items: additionalProperties: true type: object description: An aggregation row. Contains the grouped field values (keyed by the group_by field names) and a `record_count` integer. For example, when grouping by `score`, each row has a `score` value and a `record_count` of conversations with that score. When also splitting by `metadata.assistant_version_id`, each row includes both `score` and `metadata.assistant_version_id` plus their combined `record_count`. properties: record_count: type: integer description: Number of conversation insights that match this combination of grouped field values. required: - record_count type: array title: Data description: Aggregation result rows. Each row contains the grouped field values and a `record_count`. type: object required: - data title: ConversationInsightAggregateResp description: Aggregated conversation insight counts grouped by the specified fields. Each item in `data` contains the grouped field values and a `record_count` indicating how many conversation insights match that combination. ConversationInsightListData: properties: data: items: $ref: '#/components/schemas/ConversationInsight' type: array title: Data meta: $ref: '#/components/schemas/Meta' type: object required: - data - meta title: ConversationInsightListData ConversationMessage: type: object required: - role - text properties: role: type: string enum: - user - assistant - tool description: The role of the message sender. text: type: string description: The message content. Can be null for tool calls. tool_calls: type: array description: Optional tool calls made by the assistant. items: type: object properties: id: type: string description: Unique identifier for the tool call. type: type: string enum: - function description: Type of the tool call. function: type: object properties: name: type: string description: Name of the function to call. arguments: type: string description: JSON-formatted arguments to pass to the function. required: - name - arguments required: - id - type - function created_at: type: string description: The datetime the message was created on the conversation. This does not necesarily correspond to the time the message was sent. The best field to use to determine the time the end user experienced the message is `sent_at`. format: date-time example: '2025-04-15T13:07:28.764Z' sent_at: type: string description: The datetime the message was sent to the end user. format: date-time example: '2025-04-15T13:07:28.764Z' metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean - items: anyOf: - type: string - type: integer - type: boolean type: array type: object title: Metadata ConversationMessageListData: properties: data: items: $ref: '#/components/schemas/ConversationMessage' type: array title: Data meta: $ref: '#/components/schemas/Meta' type: object required: - data - meta title: ConversationMessageListData ConversationRelayAssistant: type: object title: Conversation Relay Custom Parameters description: Custom parameters for the Conversation Relay session. Pass key-value data as `assistant.dynamic_variables` to make it available to the relay session. properties: dynamic_variables: type: object description: Custom key-value parameters forwarded to the Conversation Relay session. additionalProperties: type: string example: customer_id: '12345' tier: premium additionalProperties: true ConversationRelayEmbeddedConfig: type: object title: Conversation Relay Embedded Config description: Starts a Conversation Relay session automatically when the answered/dialed call is answered. This embedded shape is supported on `answer` and `dial`. It uses public field names (`url`, `dtmf_detection`, `greeting`, `voice`, `language`, etc.) and maps them to the underlying Conversation Relay action. `client_state`, `tts_language`, and `transcription_language` inside this object are ignored; use the parent command's `client_state` and `command_id` fields instead. properties: url: type: string pattern: ^wss?:// description: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`. example: wss://example.com/conversation-relay dtmf_detection: type: boolean description: Enable DTMF detection for the relay session. default: false example: true greeting: type: string description: Text played when the relay session starts. example: Hi! Ask me anything! voice: $ref: '#/components/schemas/VoiceConfig' voice_settings: description: The settings associated with the voice selected oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' - $ref: '#/components/schemas/SonioxVoiceSettings' discriminator: propertyName: type mapping: elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' aws: '#/components/schemas/AWSVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' soniox: '#/components/schemas/SonioxVoiceSettings' tts_provider: type: string description: Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`. example: telnyx provider: type: string description: Structured voice provider. Must be supplied together with `structured_provider`. example: elevenlabs structured_provider: $ref: '#/components/schemas/ConversationRelayStructuredProvider' language: type: string description: Default language for both text-to-speech and speech recognition. default: en example: en-US languages: type: array description: Per-language TTS and transcription settings. items: $ref: '#/components/schemas/ConversationRelayLanguage' interruptible: $ref: '#/components/schemas/ConversationRelayInterruptible' interruptible_greeting: $ref: '#/components/schemas/ConversationRelayInterruptible' interruption_settings: $ref: '#/components/schemas/ConversationRelayInterruptionSettings' transcription_engine: description: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription` object is not supported. type: string enum: - Google - Telnyx - Deepgram - Azure - xAI - AssemblyAI - Speechmatics - Soniox - A - B default: Google example: Google transcription_engine_config: $ref: '#/components/schemas/ConversationRelayTranscriptionEngineConfig' custom_parameters: type: object description: Custom key-value parameters forwarded to the relay session as assistant dynamic variables. additionalProperties: true example: customer_id: '12345' required: - url example: url: wss://example.com/conversation-relay dtmf_detection: true greeting: Hi! Ask me anything! voice: Telnyx.KokoroTTS.af tts_provider: telnyx voice_settings: type: telnyx language: en-US languages: - language: en-US voice: Telnyx.Ultra.alloy tts_provider: telnyx transcription_engine: Deepgram transcription_engine_config: transcription_model: deepgram/nova-3 interruptible: speech interruptible_greeting: dtmf custom_parameters: customer_id: '12345' ConversationRelayInterruptible: type: string description: Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only. enum: - none - any - speech - dtmf default: any example: speech ConversationRelayInterruptionSettings: type: object title: Conversation Relay Interruption Settings description: Settings for handling caller interruptions during Conversation Relay speech. properties: enable: type: boolean description: Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`. interruptible: $ref: '#/components/schemas/ConversationRelayInterruptible' interruptible_greeting: $ref: '#/components/schemas/ConversationRelayInterruptible' welcome_greeting_interruptible: $ref: '#/components/schemas/ConversationRelayInterruptible' ConversationRelayLanguage: type: object title: Conversation Relay Language description: Language-specific TTS and transcription settings for Conversation Relay. properties: language: type: string description: BCP 47 language tag for this language configuration. example: en-US tts_provider: type: string description: Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider from the voice identifier. example: telnyx voice: type: string description: Voice identifier for this language. example: Telnyx.KokoroTTS.af voice_settings: description: The settings associated with the voice selected oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' - $ref: '#/components/schemas/SonioxVoiceSettings' discriminator: propertyName: type mapping: elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' aws: '#/components/schemas/AWSVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' soniox: '#/components/schemas/SonioxVoiceSettings' transcription_engine: description: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider` and `speech_model` for that language. type: string enum: - Google - Telnyx - Deepgram - Azure - xAI - AssemblyAI - Speechmatics - Soniox - A - B default: Google example: Google transcription_engine_config: $ref: '#/components/schemas/ConversationRelayTranscriptionEngineConfig' transcription_provider: type: string description: Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text. example: Deepgram speech_model: type: string description: Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring speech-to-text. example: nova-3 required: - language ConversationRelaySettings: type: object title: Conversation Relay Settings description: Conversation Relay connection settings. This object can provide `url`, `dtmf_detection`, `interruptible`, `interruptible_greeting`, and `languages`. Top-level aliases override nested values when both are present. properties: url: type: string pattern: ^wss?:// description: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`. example: wss://example.com/conversation-relay dtmf_detection: type: boolean description: Whether to enable DTMF detection during the relay session. default: false example: true interruptible: $ref: '#/components/schemas/ConversationRelayInterruptible' interruptible_greeting: $ref: '#/components/schemas/ConversationRelayInterruptible' languages: type: array description: Language-specific TTS and transcription settings. items: $ref: '#/components/schemas/ConversationRelayLanguage' required: - url example: url: wss://example.com/conversation-relay dtmf_detection: true interruptible: speech interruptible_greeting: dtmf languages: - language: en-US tts_provider: telnyx voice: Telnyx.KokoroTTS.af transcription_engine: Deepgram transcription_engine_config: transcription_model: deepgram/nova-3 ConversationRelayStartRequest: type: object title: Conversation Relay Start Request description: 'Start a Conversation Relay session. A WebSocket URL is required: provide it as `url`, `conversation_relay_url`, or `conversation_relay_settings.url`; top-level values take precedence over nested settings. Use `transcription_engine` and `transcription_engine_config` for speech-to-text configuration; the `transcription` object is not supported.' properties: conversation_relay_settings: $ref: '#/components/schemas/ConversationRelaySettings' url: type: string pattern: ^wss?:// description: Public alias for `conversation_relay_url`. Must start with `ws://` or `wss://`. If both are present, this value wins. example: wss://example.com/conversation-relay dtmf_detection: type: boolean description: Public alias for `conversation_relay_dtmf_detection`. If both are present, this value wins. default: false example: true conversation_relay_url: type: string pattern: ^wss?:// description: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`. example: wss://example.com/conversation-relay conversation_relay_dtmf_detection: type: boolean description: Enable DTMF detection for the relay session. default: false example: true voice: $ref: '#/components/schemas/VoiceConfig' voice_settings: description: The settings associated with the voice selected oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' - $ref: '#/components/schemas/SonioxVoiceSettings' discriminator: propertyName: type mapping: elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' aws: '#/components/schemas/AWSVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' soniox: '#/components/schemas/SonioxVoiceSettings' greeting: type: string description: Text played when the relay session starts. example: Hi! Ask me anything! language: type: string description: Default language for the relay session. This value is used for both text-to-speech and speech recognition. default: en example: en-US languages: type: array description: Per-language TTS and transcription settings. items: $ref: '#/components/schemas/ConversationRelayLanguage' interruption_settings: $ref: '#/components/schemas/ConversationRelayInterruptionSettings' transcription: type: object deprecated: true description: Not supported for Conversation Relay start requests. Use `transcription_engine` and `transcription_engine_config` instead. additionalProperties: true assistant: $ref: '#/components/schemas/ConversationRelayAssistant' client_state: type: string description: Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 tts_provider: type: string description: Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`. example: telnyx provider: type: string description: Structured voice provider. Must be supplied together with `structured_provider`. example: elevenlabs structured_provider: $ref: '#/components/schemas/ConversationRelayStructuredProvider' transcription_engine: description: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription` object is not supported. type: string enum: - Google - Telnyx - Deepgram - Azure - xAI - AssemblyAI - Speechmatics - Soniox - A - B default: Google example: Google transcription_engine_config: $ref: '#/components/schemas/ConversationRelayTranscriptionEngineConfig' interruptible: $ref: '#/components/schemas/ConversationRelayInterruptible' interruptible_greeting: $ref: '#/components/schemas/ConversationRelayInterruptible' custom_parameters: type: object description: Custom key-value parameters forwarded to the relay session as `assistant.dynamic_variables`. If `assistant.dynamic_variables` is also present, these values are merged in. additionalProperties: true example: customer_id: '12345' example: url: wss://example.com/conversation-relay dtmf_detection: true interruptible: speech interruptible_greeting: dtmf greeting: Hi! Ask me anything! voice: Telnyx.KokoroTTS.af tts_provider: telnyx voice_settings: type: telnyx language: en-US languages: - language: en-US tts_provider: telnyx voice: Telnyx.KokoroTTS.af transcription_engine: Deepgram transcription_engine_config: transcription_model: deepgram/nova-3 custom_parameters: customer_id: '12345' allOf: - if: not: anyOf: - properties: url: type: string required: - url - properties: conversation_relay_url: type: string required: - conversation_relay_url then: properties: conversation_relay_settings: type: object required: - conversation_relay_settings ConversationRelayStopRequest: type: object title: Conversation Relay Stop Request properties: client_state: type: string description: Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 ConversationRelayStructuredProvider: type: object title: Conversation Relay Structured Provider description: Provider-specific structured voice settings. Must be supplied together with `provider`; Telnyx sends the value as the nested provider configuration for Conversation Relay. additionalProperties: true example: voice_id: voice-id model_id: Default ConversationRelayTranscriptionEngineConfig: type: object title: Conversation Relay Transcription Engine Config description: Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server. properties: interim_results: type: boolean default: false description: 'Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.' eot_threshold: type: number minimum: 0.5 maximum: 0.9 default: 0.7 description: 'Deepgram Flux: confidence required to end the caller''s turn.' eager_eot_threshold: type: number minimum: 0.3 maximum: 0.7 description: 'Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.' additionalProperties: true example: transcription_model: deepgram/flux interim_results: true eager_eot_threshold: 0.5 ConversationsListData: properties: data: items: $ref: '#/components/schemas/Conversation' type: array title: Data type: object required: - data title: ConversationsListData CostInfo: type: object required: - event_cost - cumulative_cost - currency properties: event_cost: type: string description: Cost of this individual event. cumulative_cost: type: string description: Cumulative cost including all descendants. currency: type: string description: ISO 4217 currency code. CostInformation: type: object properties: upfront_cost: type: string example: '3.21' monthly_cost: type: string example: '6.54' currency: type: string description: The ISO 4217 code for the currency. example: USD example: upfront_cost: '3.21' monthly_cost: '6.54' currency: USD CostSummary: type: object required: - total - currency properties: total: type: string description: Total session cost as a decimal string. currency: type: string description: ISO 4217 currency code. Country: type: object title: Country properties: code: type: string description: ISO 3166-1 Alpha-2 Country Code. example: US name: type: string description: The name of the country. example: United States of America required: - code - name CountryCode: type: string description: ISO 3166-1 Alpha-2 Country Code. example: US CountryCoverage: type: object properties: code: type: string description: Country ISO code numbers: type: boolean features: type: array description: Set of features supported items: type: string phone_number_type: type: array description: Phone number type items: type: string reservable: type: boolean description: Supports reservable quickship: type: boolean description: Supports quickship international_sms: type: boolean p2p: type: boolean local: type: object properties: features: type: array items: type: string reservable: type: boolean quickship: type: boolean international_sms: type: boolean p2p: type: boolean full_pstn_replacement: type: boolean toll_free: type: object properties: features: type: array items: type: string reservable: type: boolean quickship: type: boolean international_sms: type: boolean p2p: type: boolean full_pstn_replacement: type: boolean mobile: type: object additionalProperties: true national: type: object additionalProperties: true inventory_coverage: type: boolean description: Indicates whether country can be queried with inventory coverage endpoint shared_cost: type: object additionalProperties: true region: type: - string - 'null' description: Geographic region (e.g., AMER, EMEA, APAC) example: code: US numbers: true features: - hd_voice - emergency - voice - mms - fax - sms - international_sms phone_number_type: - local - local - local - toll_free reservable: true quickship: true international_sms: true p2p: true local: features: - hd_voice - voice - international_sms - mms - fax - sms - emergency reservable: true quickship: false international_sms: true p2p: true full_pstn_replacement: true toll_free: features: - voice - mms - fax - sms - emergency reservable: true quickship: true international_sms: false p2p: false full_pstn_replacement: false mobile: {} national: {} inventory_coverage: true shared_cost: {} region: AMER CreateAlphanumericSenderIdRequest: type: object required: - alphanumeric_sender_id - messaging_profile_id properties: alphanumeric_sender_id: type: string description: The alphanumeric sender ID string. example: MyCompany messaging_profile_id: type: string format: uuid description: The messaging profile to associate the sender ID with. us_long_code_fallback: type: string description: A US long code number to use as fallback when sending to US destinations. example: '+15551234567' CreateAndroidPushCredentialRequest: type: object title: Create Android Push Credential Request required: - type - project_account_json_file - alias properties: type: description: Type of mobile push credential. Should be android here type: string enum: - android project_account_json_file: description: Private key file in JSON format type: object example: private_key: BBBB0J56jd8kda:APA91vjb11BCjvxx3Jxja... client_email: account@customer.org additionalProperties: true alias: description: Alias to uniquely identify the credential type: string example: LucyAndroidCredential CreateAssistantRequest: properties: name: type: string model: type: string description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model. instructions: type: string description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) tools: $ref: '#/components/schemas/AssistantTools' description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. mcp_servers: type: array items: $ref: '#/components/schemas/AssistantMCPServer' default: [] description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here. a2a_agents: type: array items: $ref: '#/components/schemas/AssistantA2AAgent' default: [] description: 'A2A agents this assistant can delegate to. Tools are not stored here: at the start of every conversation each agent''s card is fetched and one tool is derived per skill the card advertises, named `a2a__`. The following limits are not enforced when the assistant is saved, and anything past them is dropped when the conversation starts: 64 agents per assistant, 64 skills per card, 128 derived tools per assistant, and a 6 second budget for all card fetches combined. An agent whose card cannot be fetched costs the assistant that capability for the conversation; it does not fail the call.' tool_ids: title: Ids of shared tools items: type: string type: array description: IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`. description: type: string greeting: type: string description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions. llm_api_key_ref: type: string description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.' external_llm: $ref: '#/components/schemas/ExternalLLMReq' fallback_config: $ref: '#/components/schemas/FallbackConfigReq' voice_settings: $ref: '#/components/schemas/inference-embedding_VoiceSettings' avatar_settings: anyOf: - $ref: '#/components/schemas/AvatarSettingsRequest' - type: 'null' description: '**Beta:** Optional avatar configuration for supported realtime browser conversations. Omit or set to `null` to create the assistant without an avatar.' transcription: $ref: '#/components/schemas/TranscriptionSettings' telephony_settings: $ref: '#/components/schemas/TelephonySettings' messaging_settings: $ref: '#/components/schemas/MessagingSettings' enabled_features: items: $ref: '#/components/schemas/EnabledFeatures' type: array insight_settings: $ref: '#/components/schemas/InsightSettings' privacy_settings: $ref: '#/components/schemas/PrivacySettings' dynamic_variables_webhook_url: type: string description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.' dynamic_variables_webhook_timeout_ms: type: integer minimum: 1 maximum: 10000 default: 1500 description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). dynamic_variables: type: object description: Map of dynamic variables and their default values additionalProperties: true widget_settings: $ref: '#/components/schemas/WidgetSettings' interruption_settings: $ref: '#/components/schemas/inference-embedding_InterruptionSettings' integrations: type: array items: $ref: '#/components/schemas/AssistantIntegration' default: [] description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`. observability_settings: $ref: '#/components/schemas/ObservabilityReq' tags: type: array items: type: string default: [] description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints. post_conversation_settings: $ref: '#/components/schemas/PostConversationSettingsReq' delegation_settings: $ref: '#/components/schemas/DelegationSettings' websocket_settings: $ref: '#/components/schemas/WebsocketSettings' conversation_flow: $ref: '#/components/schemas/ConversationFlowReq' type: object required: - name - instructions title: CreateAssistantRequest CreateAssistantTestRequest: properties: name: type: string maxLength: 255 minLength: 1 title: Name description: A descriptive name for the assistant test. This will be used to identify the test in the UI and reports. example: Customer Support Bot Test description: type: string maxLength: 1000 title: Description description: Optional detailed description of what this test evaluates and its purpose. Helps team members understand the test's objectives. telnyx_conversation_channel: allOf: - $ref: '#/components/schemas/TelnyxConversationChannel' description: The communication channel through which the test will be conducted. Determines how the assistant will receive and respond to test messages. default: web_chat example: web_chat destination: type: string minLength: 1 title: Destination description: 'The target destination for the test conversation. Format depends on the channel: phone number for SMS/voice, webhook URL for web chat, etc.' example: '+15551234567' max_duration_seconds: type: integer maximum: 3600.0 minimum: 1.0 title: Max Duration Seconds description: Maximum duration in seconds that the test conversation should run before timing out. If not specified, uses system default timeout. test_suite: type: string maxLength: 100 title: Test Suite description: Optional test suite name to group related tests together. Useful for organizing tests by feature, team, or release cycle. instructions: type: string maxLength: 5000 minLength: 1 title: Instructions description: Detailed instructions that define the test scenario and what the assistant should accomplish. This guides the test execution and evaluation. example: Act as a frustrated customer who received a damaged product. Ask for a refund and escalate if not satisfied with the initial response. rubric: items: type: object required: - name - criteria properties: name: type: string description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity. criteria: type: string description: Specific guidance on how to assess the assistant’s performance for this rubric item. additionalProperties: false type: array minItems: 1 title: Rubric description: Evaluation criteria used to assess the assistant's performance. Each rubric item contains a name and specific criteria for evaluation. example: - criteria: Assistant responds within 30 seconds name: Response Time - criteria: Provides correct product information name: Accuracy type: object required: - name - destination - instructions - rubric title: CreateAssistantTestRequest description: 'Request model for creating a new assistant test. This model defines all the required and optional parameters needed to create a comprehensive test for an AI assistant, including test configuration, evaluation criteria, and scheduling options.' CreateAvatarRequest: type: object additionalProperties: false required: - image_file - name properties: image_file: type: string format: binary description: JPEG, PNG, or WebP image file. The maximum file size is 10 MiB. name: type: string minLength: 1 maxLength: 255 description: Customer-facing name of the custom avatar. example: Customer portrait CreateBrand: title: CreateBrand required: - entityType - displayName - country - email - vertical type: object properties: entityType: allOf: - $ref: '#/components/schemas/EntityType' description: Entity type behind the brand. This is the form of business establishment. displayName: title: Displayname maxLength: 100 type: string description: Display name, marketing name, or DBA name of the brand. example: ABC Mobile companyName: title: Companyname maxLength: 100 type: string description: (Required for Non-profit/private/public) Legal company name. example: ABC Inc. firstName: title: Firstname maxLength: 100 type: string description: First name of business contact. example: John lastName: title: Lastname maxLength: 100 type: string description: Last name of business contact. example: Smith ein: title: Ein maxLength: 20 type: string description: (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S. example: '111111111' phone: title: Phone maxLength: 20 type: string description: Valid phone number in e.164 international format. example: '+12024567890' street: title: Street maxLength: 100 type: string description: Street number and name. example: '123' city: title: City maxLength: 100 type: string description: City name example: New York state: title: State maxLength: 20 type: string description: State. Must be 2 letters code for United States. example: NY postalCode: title: Postalcode maxLength: 10 type: string description: Postal codes. Use 5 digit zipcode for United States example: '10001' country: title: Country maxLength: 2 type: string description: 'ISO2 2 characters country code. Example: US - United States' example: US email: title: Email maxLength: 100 type: string description: Valid email address of brand support contact. stockSymbol: title: Stocksymbol maxLength: 10 type: string description: (Required for public company) stock symbol. example: ABC stockExchange: allOf: - $ref: '#/components/schemas/StockExchange' description: (Required for public company) stock exchange. example: NASDAQ ipAddress: title: Ipaddress maxLength: 50 type: string description: IP address of the browser requesting to create brand identity. website: title: Website maxLength: 100 type: string description: Brand website URL. example: http://www.abcmobile.com vertical: allOf: - $ref: '#/components/schemas/Vertical' description: Vertical or industry segment of the brand. isReseller: title: Isreseller type: boolean default: false mock: title: Mock type: boolean description: Mock brand for testing purposes. Defaults to false. default: false mobilePhone: title: Mobilephone maxLength: 20 type: string description: Valid mobile phone number in e.164 international format. example: '+12024567890' businessContactEmail: title: BusinessContactEmail type: string description: 'Business contact email. Required if `entityType` is `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this field or set it to `null`.' example: name@example.com webhookURL: title: WebhookURL type: string description: Webhook URL for brand status updates. example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93 webhookFailoverURL: title: WebhookFailoverURL type: string description: Webhook failover URL for brand status updates. example: https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6 CreateCallControlApplicationRequest: type: object title: Create Call Control Application Request required: - application_name - webhook_event_url properties: application_name: type: string description: A user-assigned name to help manage the application. example: call-router webhook_event_url: type: string format: url description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com active: type: boolean description: Specifies whether the connection can be used. default: true anchorsite_override: type: string description: 'Latency directs Telnyx to route media through the site with the lowest round-trip time to the user''s connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media. ' enum: - Latency - Chicago, IL - Ashburn, VA - San Jose, CA - London, UK - Chennai, IN - Amsterdam, Netherlands - Toronto, Canada - Sydney, Australia example: Amsterdam, Netherlands default: Latency dtmf_type: type: string description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats. enum: - RFC 2833 - Inband - SIP INFO example: Inband default: RFC 2833 first_command_timeout: type: boolean description: Specifies whether calls to phone numbers associated with this connection should hangup after timing out. example: true default: false first_command_timeout_secs: type: integer description: Specifies how many seconds to wait before timing out a dial command. example: 10 default: 30 inbound: $ref: '#/components/schemas/CallControlApplicationInbound' outbound: $ref: '#/components/schemas/CallControlApplicationOutbound' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_event_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this Call Control Application. default: false redact_dtmf_debug_logging: type: boolean description: When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions. example: true default: false example: application_name: call-router webhook_event_url: https://example.com active: false anchorsite_override: Latency dtmf_type: Inband first_command_timeout: true first_command_timeout_secs: 10 inbound: channel_limit: 10 shaken_stir_enabled: true sip_subdomain: example sip_subdomain_receive_settings: only_my_connections outbound: channel_limit: 10 outbound_voice_profile_id: '1293384261075731499' webhook_api_version: '1' webhook_event_failover_url: https://failover.example.com webhook_timeout_secs: 25 call_cost_in_webhooks: true redact_dtmf_debug_logging: true CreateCloudfsFilesystemRequest: type: object properties: name: type: string description: Filesystem name, unique within your organization. Names are trimmed and lowercased; after normalization they may contain lowercase letters, numbers, `.`, `_`, and `-` only. pattern: ^[a-z0-9._-]+$ minLength: 1 maxLength: 63 example: agent-fs region: type: string description: Region where the filesystem's storage and metadata are provisioned. enum: - us-central-1 - us-east-1 - us-west-1 example: us-east-1 required: - name - region CreateCollectionRequest: type: object required: - name properties: name: type: string description: Human-readable collection name. example: Support Transcripts description: type: string description: Optional description. example: All customer support voice transcripts. slug: type: string description: Optional slug (unique per organization). Derived from `name` when omitted. example: support-transcripts sources: type: array description: Optional sources to attach at creation time. items: $ref: '#/components/schemas/SourceRequest' settings: description: Optional retrieval settings. allOf: - $ref: '#/components/schemas/RetrievalSettingsWrapper' CreateConferenceRequest: required: - call_control_id - name type: object title: Create Conference Request properties: call_control_id: description: Unique identifier and token for controlling the call example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ== type: string name: description: Name of the conference example: Business type: string beep_enabled: description: Whether a beep sound should be played when participants join and/or leave the conference. enum: - always - never - on_enter - on_exit default: never example: on_exit type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. The client_state will be updated for the creator call leg and will be used for all webhooks related to the created conference. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string comfort_noise: description: Toggle background comfort noise. example: false type: boolean default: true command_id: description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string duration_minutes: description: Time length (minutes) after which the conference will end. example: 5 type: integer hold_audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played to participants joining the conference. The URL can point to either a WAV or MP3 file. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when "start_conference_on_create" is set to "false". hold_media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played to participants joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when "start_conference_on_create" is set to "false". max_participants: description: The maximum number of active conference participants to allow. Must be between 2 and 800. Defaults to 250 example: 3 type: integer start_conference_on_create: description: Whether the conference should be started on creation. If the conference isn't started all participants that join are automatically put on hold. Defaults to "true". example: false type: boolean region: description: Sets the region where the conference data will be hosted. Defaults to the region defined in user's data locality settings (Europe or US). example: US type: string enum: - Australia - Europe - Middle East - US example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg name: Business beep_enabled: always client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 duration_minutes: 5 hold_audio_url: http://www.example.com/audio.wav start_conference_on_create: false max_participants: 250 CreateConversationRequest: properties: name: type: string metadata: type: object description: Metadata associated with the conversation. Set `ai_disabled` to `true` to create the conversation with AI message responses disabled. additionalProperties: type: string type: object title: CreateConversationRequest CreateCredentialConnectionRequest: type: object title: Create Credential Connection Request required: - user_name - password - connection_name properties: active: type: boolean description: Defaults to true user_name: type: string description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters). example: myusername123 password: type: string description: The password to be used as part of the credentials. Must be 8 to 128 characters long. example: my123secure456password789 anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: $ref: '#/components/schemas/ConnectionName' sip_uri_calling_preference: type: string description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal). enum: - disabled - unrestricted - internal default_on_hold_comfort_noise_enabled: type: boolean default: false description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be set when the outbound object parameter call_parking_enabled is included and set to true. enum: - '1' - '2' - texml example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/CredentialInbound' outbound: $ref: '#/components/schemas/CredentialOutbound' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: active: true password: my123secure456password789 user_name: myusername123 anchorsite_override: Latency connection_name: my name sip_uri_calling_preference: disabled default_on_hold_comfort_noise_enabled: false dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true simultaneous_ringing: disabled outbound: call_parking_enabled: true ani_override: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: US t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false CreateDocServiceDocumentRequest: type: object properties: url: description: If the file is already hosted publicly, you can provide a URL and have the documents service fetch it for you. type: string example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf file: description: Alternatively, instead of the URL you can provide the Base64 encoded contents of the file you are uploading. type: string format: byte example: ZXhhbXBsZSBvZiBlbmNvZGVkIGNvbnRlbnQ= filename: description: The filename of the document. type: string example: test-document.pdf customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 CreateEmailBatchItemRequest: type: object description: 'A single message in a batch create request. This schema mirrors `CreateEmailRequest` EXCEPT it does not accept the reply/forward threading parameters (`in_reply_to_message_id`, `reply_to_all`, `forward_of_message_id`) — those are single-send-only in Phase 1 (MSG-1491) and are not yet implemented on the batch endpoint. Recipient email addresses must be unique across `to`, `cc`, and `bcc` after case-insensitive normalization. Duplicate recipients return `400`.' properties: from: $ref: '#/components/schemas/EmailAddressInput' from_name: type: string description: Optional display name for string `from`; overrides `from.name` when provided. to: $ref: '#/components/schemas/EmailAddressArrayInput' cc: type: array items: $ref: '#/components/schemas/EmailAddressInput' bcc: type: array items: $ref: '#/components/schemas/EmailAddressInput' reply_to: $ref: '#/components/schemas/EmailAddressInput' description: Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored. subject: type: string description: Required unless `template_id` is supplied. When using a template, the template's subject is rendered; if the template has no subject or renders empty, the request returns 400. html_body: type: string description: HTML email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses. text_body: type: string description: Plain text email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses. headers: type: object additionalProperties: type: string description: Custom email headers. Write-only; not returned in responses. attachments: type: array items: $ref: '#/components/schemas/AttachmentRequest' tags: type: array items: type: string description: Tags for categorization and filtering. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[tags]` when listing messages. group_id: type: string format: uuid nullable: true description: Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling. ignore_suppression: type: boolean default: false description: 'When true, allows delivery to recipients whose suppressions explicitly permit an override. Hard bounces, spam complaints, and invalid-address suppressions cannot be overridden. Requires the `email:override` API scope. ' metadata: type: object additionalProperties: true description: Custom metadata key/value pairs. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[metadata]` when listing messages. tracking_settings: $ref: '#/components/schemas/TrackingSettings' template_id: type: string format: uuid template_variables: type: object default: {} additionalProperties: true description: Variables for Liquid template rendering. Non-object values may cause a 422 validation error on message creation, but are silently treated as an empty object for template rendering. When the template enables `strict_variables`, a missing required variable fails the request with 422 (single send) or a per-item `unprocessable_entity` error (batch) naming the variable; no message is persisted for the failed item. scheduled_at: type: string format: date-time nullable: true description: Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP 422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at` remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at` is omitted or null, `send_at` is used. send_at: type: string format: date-time deprecated: true description: Deprecated alias for `scheduled_at`. inline_css: type: boolean default: false sandbox_mode: type: boolean default: false description: 'Per-message sandbox flag. The batch-level `sandbox_mode` envelope value is authoritative: it overwrites every message''s `sandbox_mode` before processing, including the `false` default when the envelope omits the field. A per-item `sandbox_mode: true` inside a non-sandbox batch is therefore a real send. Set the envelope field to run any batch item in sandbox mode.' required: - from - to CreateEmailBatchRequest: type: object properties: messages: type: array minItems: 1 maxItems: 1000 description: Array of email messages to send. Up to 1,000 messages per batch request. Each message is validated and sent independently; per-message failures do not affect other messages in the batch. items: $ref: '#/components/schemas/CreateEmailBatchItemRequest' sandbox_mode: type: boolean default: false description: Applies sandbox mode to all messages in the batch and overrides any per-message `sandbox_mode` value — each message's effective `sandbox_mode` is exactly this envelope value. Reserved recipients at `test.telnyx.com` produce the deterministic event chains documented on CreateEmailRequest.sandbox_mode; no batch item is injected into the MTA or outbound Kafka path. Sandbox batch items are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation signals. required: - messages CreateEmailBlockRequest: type: object required: - to properties: to: type: string description: 'Recipient address (normalized: trim + lower-case).' from: type: string nullable: true description: Sender address (normalized). `null` ⇒ account/domain scope. domain_id: type: string format: uuid nullable: true description: '`null` ⇒ account scope.' expires_at: type: string format: date-time nullable: true description: '`reason`/`source` are forced to `manual_block`/`manual` (ignored if supplied). `scope` is derived. `bounce_category`/`dsn_code`/`meta`/ `group_id` are not accepted on the public surface. ' CreateEmailDomainRequest: type: object required: - domain properties: domain: type: string example: example.com inbound_enabled: type: boolean default: false description: Enable inbound routing for this domain dmarc_policy: type: object allOf: - $ref: '#/components/schemas/EmailDMARCPolicy' nullable: true description: 'DMARC policy. Omit/null for the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com). ' tracking: $ref: '#/components/schemas/DomainsTrackingSettings' CreateEmailInboxRequest: type: object description: Both fields are optional. Omitting `username` generates one; omitting `domain_id` uses the account's shared inbound subdomain. Omitting both creates an instant inbox with a generated username. properties: username: type: string description: Inbox local part. Trimmed and lowercased before validation; the normalized value must be 1-64 characters, start and end with a letter or digit, and contain only letters, digits, dots, hyphens, and underscores. Generated when omitted. domain_id: type: string format: uuid description: Account-owned, inbound-enabled domain UUID. The account's shared inbound subdomain is allocated when omitted. CreateEmailRequest: type: object description: Recipient email addresses must be unique across `to`, `cc`, and `bcc` after case-insensitive normalization. Duplicate recipients return `400 Bad Request`. properties: from: $ref: '#/components/schemas/EmailAddressInput' from_name: type: string description: Optional display name for string `from`; overrides `from.name` when provided. to: $ref: '#/components/schemas/EmailAddressArrayInput' cc: type: array items: $ref: '#/components/schemas/EmailAddressInput' bcc: type: array items: $ref: '#/components/schemas/EmailAddressInput' reply_to: $ref: '#/components/schemas/EmailAddressInput' description: Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored. subject: type: string description: Required unless `template_id` is supplied. When using a template, the template's subject is rendered; if the template has no subject or renders empty, the request returns 400. html_body: type: string description: HTML email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses. text_body: type: string description: Plain text email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses. headers: type: object additionalProperties: type: string description: Custom email headers. Write-only; not returned in responses. attachments: type: array items: $ref: '#/components/schemas/AttachmentRequest' tags: type: array items: type: string description: Tags for categorization and filtering. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[tags]` when listing messages. group_id: type: string format: uuid nullable: true description: Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling. ignore_suppression: type: boolean default: false description: 'When true, allows delivery to recipients whose suppressions explicitly permit an override. Hard bounces, spam complaints, and invalid-address suppressions cannot be overridden. Requires the `email:override` API scope. ' metadata: type: object additionalProperties: true description: Custom metadata key/value pairs. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[metadata]` when listing messages. tracking_settings: $ref: '#/components/schemas/TrackingSettings' template_id: type: string format: uuid template_variables: type: object default: {} additionalProperties: true description: Variables for Liquid template rendering. Non-object values may cause a 422 validation error on message creation, but are silently treated as an empty object for template rendering. When the template enables `strict_variables`, a missing required variable fails the request with 422 (single send) or a per-item `unprocessable_entity` error (batch) naming the variable; no message is persisted for the failed item. scheduled_at: type: string format: date-time nullable: true description: Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP 422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at` remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at` is omitted or null, `send_at` is used. send_at: type: string format: date-time deprecated: true description: Deprecated alias for `scheduled_at`. inline_css: type: boolean default: false sandbox_mode: type: boolean default: false description: 'Validates and accepts the message without injecting it into the MTA or outbound Kafka path. Nothing is delivered: sandbox records are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation signals. The reserved sandbox test-recipient domain is `test.telnyx.com`. In sandbox mode, these addresses produce deterministic recipient-scoped lifecycle events: - `delivered@test.telnyx.com`: queued -> sending -> sent -> delivered - `hard-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (permanent) - `soft-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (transient) - `complaint@test.telnyx.com`: queued -> sending -> sent -> complained - `suppressed@test.telnyx.com`: queued -> suppressed - `invalid@test.telnyx.com`: queued -> sending -> failed (invalid recipient) - `dkim-fail@test.telnyx.com`: queued -> sending -> failed (DKIM unavailable) - `rate-limit@test.telnyx.com`: queued -> sending -> failed (rate limit exceeded) Matching is case-insensitive for both the local part and the domain and requires the exact domain `test.telnyx.com` — subdomains and other domains do not match. Mixed sandbox sends simulate only reserved test recipients; other recipients retain ordinary sandbox behavior (accepted, no delivery attempted). Hard-bounce and complaint outcomes also use the normal automatic-suppression pipeline. Non-sandbox sends to these addresses use the normal delivery path.' in_reply_to_message_id: type: string format: uuid nullable: true description: 'Telnyx message UUID of the message this send replies to. When provided, the API sets RFC 5322 `In-Reply-To` and `References` headers on the outbound MIME so the recipient''s mailbox (Gmail/Outlook) threads it correctly. The parent is looked up under the caller''s account scope; a UUID belonging to another account yields a non-enumerating 404. Wire-only (Phase 1): the API sets the headers and does NOT resolve or mutate `thread_id` on the server side. Messages sent without this parameter are standalone (no threading headers injected). Cannot be combined with `forward_of_message_id` (422).' reply_to_all: type: boolean default: false nullable: true description: 'Indicates a reply-all intent. In Phase 1 (wire-only) this does not change the threading headers — recipient selection is customer- controlled (`to`/`cc`), and a thread is not defined by its audience. When the referenced message has no thread context, reply-all degrades to a plain reply (parent ID only in `References`). The resolution engine (separate work) will expand the ancestor chain at a later phase with no API change. Only meaningful alongside `in_reply_to_message_id`.' forward_of_message_id: type: string format: uuid nullable: true description: 'Telnyx message UUID of the message this send forwards. Forwarded messages start a NEW thread per RFC 5322 — NO `In-Reply-To` or `References` headers are set on the outbound MIME. The id is recorded in the message''s metadata for EDR provenance only. The id is validated as a UUID but is NOT looked up against the message store — existence is the caller''s responsibility (the forward is pure metadata; it does not affect delivery). Cannot be combined with `in_reply_to_message_id` (422).' required: - from - to CreateEmailTemplateRequest: type: object properties: name: type: string pattern: ^[A-Za-z0-9 _-]+$ description: Letters, numbers, spaces, hyphens, and underscores only. maxLength: 255 subject: type: string nullable: true description: Liquid template subject. maxLength: 255 html_body: type: string nullable: true description: Liquid template HTML body. text_body: type: string nullable: true description: Liquid template text body. variables: type: array description: Persisted variable names. In `automatic` mode a non-null array is rejected; in `explicit` mode this is the exact manual array and each item is limited to 255 Unicode code points. items: type: string maxLength: 255 nullable: true variables_mode: type: string enum: - automatic - explicit description: Controls how `variables` is maintained. If both fields are omitted (or `variables` is null), the template uses `automatic` mode and extracts variable names from the effective subject, HTML body, and text body. A non-null `variables` array with no mode selects `explicit`. `automatic` rejects a simultaneous non-null array; `explicit` requires a non-null array, including valid `[]`, and preserves its exact order, duplicates, and string contents. strict_variables: type: boolean default: false description: 'Per-template strict variable-validation setting. Defaults to `false` for backward compatibility. When `true`, a send or render that is missing a variable marked `required: true` in `variable_schema` fails with 422 naming the variable. Missing optional variables never fail; their schema `default` (when set) is applied to the render.' autoescape: type: boolean default: false description: 'Per-template HTML autoescaping setting. Defaults to `false` for backward compatibility. When `true`, the rendered `html_body` HTML-escapes each Liquid expression''s output at the output boundary (after its filters run, before concatenation with literal template markup). Input values are never mutated and `subject`/`text_body` are never autoescaped. The boundary escape is idempotent: HTML entities already present in the output (e.g. from an explicit `escape` filter) are preserved, so an explicit `escape`/`escape_once` is never double-escaped, and markup introduced by any later filter in the chain is still escaped.' variable_schema: type: object nullable: true description: 'Structured variable requirements. Required variables cannot define defaults; invalid combinations return 422. This is independent of the legacy `variables` array. On render with `strict_variables` enabled: `required` variables must be supplied as non-empty values — absent, `null`, empty string, empty object `{}`, and empty array `[]` all fail with 422 naming the variable, while present values such as `false` and `0` pass (they are present, not empty). Optional variables fall back to their `default` when absent.' additionalProperties: $ref: '#/components/schemas/VariableSchemaEntry' required: - name CreateEmailValidationBatchRequest: type: object properties: emails: type: array minItems: 1 maxItems: 1000 items: type: string description: Email address to validate. Any string is accepted; validation results indicate whether the address is valid. Blank strings are discarded and counted in duplicates_removed; if all entries are blank, returns 400. webhook_url: type: string format: uri maxLength: 2048 pattern: ^https?:// description: URL for batch completion webhook. Empty string is treated as omitted. SSRF-protected; private/reserved IPs and internal hostnames are rejected. required: - emails CreateEmailValidationRequest: type: object properties: email: type: string description: Email address to validate. Any non-empty string is accepted; invalid syntax returns valid=false rather than a request error. required: - email CreateEmailWebhookRequest: type: object required: - url - events properties: url: type: string format: uri description: HTTPS endpoint to deliver subscribed events to. events: type: array minItems: 1 items: $ref: '#/components/schemas/EmailWebhookEvent' description: At least one event type is required. 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. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' microsoft_teams_sbc: type: boolean description: When enabled, the connection will be created for Microsoft Teams Direct Routing. A *.mstsbc.telnyx.tech FQDN will be created for the connection automatically. default: false onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: $ref: '#/components/schemas/WebhookEventUrl' webhook_event_failover_url: $ref: '#/components/schemas/WebhookEventFailoverUrl' webhook_api_version: $ref: '#/components/schemas/WebhookApiVersion' call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false webhook_timeout_secs: $ref: '#/components/schemas/WebhookTimeoutSecs' rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/InboundFqdn' outbound: $ref: '#/components/schemas/OutboundFqdn' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: active: true anchorsite_override: Latency connection_name: string transport_protocol: TLS default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false tags: - tag1 - tag2 rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US sip_subdomain: string sip_subdomain_receive_settings: only_my_connections timeout_1xx_secs: 10 timeout_2xx_secs: 10 shaken_stir_enabled: true outbound: ani_override: '+1234567890' ani_override_type: always call_parking_enabled: true channel_limit: 10 generate_ringback_tone: true instant_ringback_enabled: true ip_authentication_method: credential-authentication ip_authentication_token: aBcD1234 localization: string outbound_voice_profile_id: '1293384261075731499' t38_reinvite_source: customer tech_prefix: '0123' encrypted_media: SRTP timeout_1xx_secs: 10 timeout_2xx_secs: 10 noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false type: object CreateFqdnRequest: title: Create Fqdn Request type: object required: - fqdn - dns_record_type - connection_id properties: connection_id: type: string description: ID of the FQDN connection to which this IP should be attached. fqdn: type: string description: FQDN represented by this resource. example: example.com port: type: - integer - 'null' description: Port to use when connecting to this FQDN. default: 5060 example: 5060 dns_record_type: type: string description: The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'. For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not specified, 5060 will be used. example: a example: connection_id: '1516447646313612565' fqdn: example.com port: 8080 dns_record_type: a CreateGrantResponse: type: object properties: redirect_uri: type: string format: uri description: Redirect URI with authorization code or error required: - redirect_uri CreateGroupMMSMessageRequest: type: object required: - from - to properties: from: type: string description: Phone number, in +E.164 format, used to send the message. x-format: address to: description: A list of destinations. No more than 8 destinations are allowed. type: array items: $ref: '#/components/schemas/ToNumber' text: type: string description: Message body (i.e., content) as a non-empty string. subject: type: string description: Subject of multimedia message media_urls: description: A list of media URLs. The total media size must be less than 1 MB. type: array items: type: string format: url webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url webhook_failover_url: description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. type: string format: url use_profile_webhooks: type: boolean description: If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile. default: true example: from: '+13125551234' to: - '+18655551234' - '+14155551234' text: Hello, World! subject: From Telnyx! media_urls: - http://example.com webhook_url: http://example.com/webhooks webhook_failover_url: https://backup.example.com/hooks use_profile_webhooks: true CreateImportRequest: type: object required: - file properties: file: type: string format: binary description: The CSV file (Plug.Upload). Missing/non-upload → 400. block_ttl_days: type: integer minimum: 1 default: 30 description: 'TTL for imported `manual_block` rows; other reasons get `expires_at: null`. Invalid/missing → falls back to 30.' CreateInboundIpRequest: type: object title: Create Inbound Ip Request properties: ani_number_format: type: string enum: - +E.164 - E.164 - +E.164-national - E.164-national default: E.164-national description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls. dnis_number_format: type: string enum: - +e164 - e164 - national - sip_username default: e164 codecs: type: array items: type: string description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.' default: - G722 - G711U - G711A - G729 - OPUS - H.264 default_routing_method: type: string enum: - sequential - round-robin description: Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed. channel_limit: type: integer default: null description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. isup_headers_enabled: type: boolean default: false description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.) prack_enabled: type: boolean description: Enable PRACK messages as defined in RFC3262. default: false sip_compact_headers_enabled: type: boolean description: Defaults to true. default: true sip_region: type: string default: US description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be used. enum: - US - Europe - Australia sip_subdomain: type: string description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric value. 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 bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. example: true encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. example: false ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/CreateInboundIpRequest' outbound: $ref: '#/components/schemas/OutboundIp' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: active: true anchorsite_override: Latency connection_name: string transport_protocol: TLS default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: false ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false tags: - tag1 - tag2 rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 default_routing_method: sequential channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US sip_subdomain: test sip_subdomain_receive_settings: only_my_connections timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true outbound: call_parking_enabled: true ani_override: string ani_override_type: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: string t38_reinvite_source: customer tech_prefix: string ip_authentication_method: token ip_authentication_token: string outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false type: object CreateIpRequest: title: Create Ip Request type: object required: - ip_address properties: connection_id: type: string description: ID of the IP Connection to which this IP should be attached. ip_address: type: string description: IP adddress represented by this resource. example: 192.168.0.0 port: type: integer description: Port to use when connecting to this IP. default: 5060 example: 5060 example: connection_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 ip_address: 192.168.0.0 port: 5060 CreateKvNamespaceRequest: type: object properties: name: type: string description: Namespace name. May contain lowercase letters, numbers, and hyphens only. pattern: ^[a-z0-9-]+$ minLength: 1 maxLength: 255 example: my-cache required: - name CreateLongCodeMessageRequest: type: object required: - from - to properties: from: type: string description: Phone number, in +E.164 format, used to send the message. x-format: address to: $ref: '#/components/schemas/ToNumber' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' subject: type: string description: Subject of multimedia message media_urls: description: 'A list of media URLs. The total media size must be less than 1 MB. **Required for MMS**' type: array items: type: string format: url webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url webhook_failover_url: description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. type: string format: url use_profile_webhooks: type: boolean description: If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile. default: true type: description: The protocol for sending the message, either SMS or MMS. type: string enum: - SMS - MMS auto_detect: description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts. type: boolean default: false encoding: type: string description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting. enum: - auto - gsm7 - ucs2 default: auto example: from: '+18445550001' to: '+13125550002' text: Hello, World! subject: From Telnyx! media_urls: - http://example.com webhook_url: http://example.com/webhooks webhook_failover_url: https://backup.example.com/hooks use_profile_webhooks: true type: MMS CreateMCPServerRequest: type: object properties: name: type: string title: Name type: type: string title: Type url: type: string title: Url api_key_ref: type: - string - 'null' title: Api Key Ref allowed_tools: type: - array - 'null' items: type: string title: Allowed Tools required: - name - type - url title: CreateMCPServerRequest CreateManagedAccountRequest: title: Create Managed Account Request required: - business_name properties: email: type: string description: The email address for the managed account. If not provided, the email address will be generated based on the email address of the manager account. example: new_managed_account@customer.org password: type: string description: Password for the managed account. If a password is not supplied, the account will not be able to be signed into directly. (A password reset may still be performed later to enable sign-in via password.) example: 3jVjLq!tMuWKyWx4NN*CvhnB business_name: type: string description: The name of the business for which the new managed account is being created, that will be used as the managed accounts's organization's name. example: Larry's Cat Food Inc managed_account_allow_custom_pricing: type: boolean description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not. If false, uses the pricing of the manager account. Defaults to false. This value may be changed after creation, but there may be time lag between when the value is changed and pricing changes take effect. example: false rollup_billing: type: boolean description: Boolean value that indicates if the billing information and charges to the managed account "roll up" to the manager account. If true, the managed account will not have its own balance and will use the shared balance with the manager account. This value cannot be changed after account creation without going through Telnyx support as changes require manual updates to the account ledger. Defaults to false. example: false example: email: larry_cat_food@customer.org password: 3jVjLq!tMuWKyWx4NN*CvhnB business_name: Larry's Cat Food Inc managed_account_allow_custom_pricing: false rollup_billing: false type: object CreateMeetingSessionArtifactRequest: title: CreateMeetingSessionArtifactRequest description: 'One of two shapes: a named type on its own, or `custom` with the prompt it answers.' oneOf: - title: Named artifact type: object additionalProperties: false required: - type properties: type: type: string enum: - summary - action_items - decisions - topics - open_questions description: What to generate from the transcript. `custom` is answered from a `prompt` you supply; the five named types need none. - title: Custom artifact type: object additionalProperties: false required: - type - prompt properties: type: type: string const: custom description: Answered from the `prompt` below rather than a fixed question. prompt: type: string minLength: 1 maxLength: 4000 description: An open-ended request answered from the transcript. Required when `type` is `custom`, and rejected with 400 on any named type. Trimmed before storage and echoed back in artifact responses and the `artifact.completed` webhook. CreateMeetingSessionRequest: title: CreateMeetingSessionRequest type: object additionalProperties: false description: 'Request body for creating a new meeting session. Cross-field rules: - `assistant` cannot be combined with `join_at`; it is available only for sessions that join immediately. - `assistant` cannot be combined with `barge_in: true`. - `assistant.avatar: true` cannot be combined with `speak_on_enter`; the assistant greets through its avatar. - The `assistant` options, including `avatar`, take effect at session creation and cannot be modified later. - A digital avatar or Assistant webpage output takes precedence over `camera_image`; the static image is ignored and a URL source is not fetched. - The former top-level `avatar` object (bring-your-own-key avatar) has been removed and is rejected with 400 `invalid_request`; use `assistant.avatar` instead.' required: - meeting_url properties: meeting_url: type: string format: uri description: The meeting URL the bot should join. bot_name: type: string minLength: 1 maxLength: 100 description: Display name for the bot in the meeting. Defaults to "Meeting Bot". join_at: type: string format: date-time description: ISO-8601 timestamp in the future at which the bot should join. If omitted, the bot joins immediately. voice: type: string minLength: 1 maxLength: 100 description: Session-default voice identifier used for `speak_on_enter` and ordinary speak actions. A voice supplied on an individual speak action overrides this default for that utterance. speak_on_enter: type: string minLength: 1 maxLength: 4000 description: 'Text the bot speaks when it enters the meeting. **Not spoken when an `assistant` is attached**: the value is accepted and echoed back on the session, but the assistant owns the voice and the line is never delivered, with no event reporting the omission. Use `chat_on_enter` to announce an assistant-backed bot. Rejected with 400 `invalid_request` when `assistant.avatar` is `true`.' chat_on_enter: type: string minLength: 1 maxLength: 4000 description: 'A message the bot posts to the meeting''s chat as soon as it becomes active — typically a recording disclosure. Delivered at most once. Independent of `speak_on_enter`: both may be set, and the chat message posts first because it does not wait for text-to-speech or avatar startup. Rejected with 422 `unsupported_capability` on platforms without meeting chat.' barge_in: type: boolean default: false description: 'When enabled, a human participant `speech_on` event interrupts and stops the current bot audio; it does not bypass admission or initiate speech. Assistant sessions reject `barge_in: true`.' summarize_on_end: type: boolean default: false description: If true, generate a summary artifact when the session ends. camera_image: $ref: '#/components/schemas/MeetingSessionCameraImage' webhook_url: type: string format: uri description: HTTPS endpoint to receive session lifecycle callbacks. Static validation requires HTTPS, rejects embedded credentials and blocked hosts, and enforces egress policy. Validation makes no network request to the endpoint. metadata: type: object additionalProperties: true description: Arbitrary key-value metadata attached to the session. The serialized JSON representation must not exceed 16384 characters at runtime. idempotency_key: type: string minLength: 1 maxLength: 255 description: Client-supplied idempotency key to safely retry creation requests without duplicating sessions. Lookup is scoped to the authenticated account and compares the key only; the request payload is not fingerprinted or compared. assistant: $ref: '#/components/schemas/MeetingSessionAssistantRequest' examples: - meeting_url: https://zoom.us/j/1234567890 bot_name: Notetaker - meeting_url: https://meet.google.com/abc-defg-hij bot_name: Avatar Assistant assistant: id: asst_fake-uuid-1234 audio_gate: full_duplex avatar: true leave_on_end: true - meeting_url: https://teams.microsoft.com/l/meetup-join/example bot_name: Voice Assistant assistant: id: asst_fake-uuid-1234 audio_gate: half_duplex dynamic_variables: candidate_name: Ada Lovelace role: Staff Engineer CreateMeetingSessionResponse: type: object additionalProperties: false required: - data properties: data: $ref: '#/components/schemas/MeetingSessionCreated' CreateMessageRequest: type: object required: - to properties: from: type: string description: 'Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). **Required if sending with a phone number, short code, or alphanumeric sender ID.** ' x-format: address messaging_profile_id: type: string description: 'Unique identifier for a messaging profile. **Required if sending via number pool or with an alphanumeric sender ID.** ' to: $ref: '#/components/schemas/ToNumber' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' subject: type: string description: Subject of multimedia message media_urls: description: 'A list of media URLs. The total media size must be less than 1 MB. **Required for MMS**' type: array items: type: string format: url webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url webhook_failover_url: description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. type: string format: url use_profile_webhooks: type: boolean description: If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile. default: true type: description: The protocol for sending the message, either SMS or MMS. type: string enum: - SMS - MMS auto_detect: description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts. type: boolean default: false send_at: description: ISO 8601 formatted date indicating when to send the message - accurate up till a minute. type: - string - 'null' format: date-time encoding: type: string description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting. enum: - auto - gsm7 - ucs2 default: auto example: from: '+18445550001' messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000 to: '+18445550001' text: Hello, World! subject: From Telnyx! media_urls: - http://example.com webhook_url: http://example.com/webhooks webhook_failover_url: https://backup.example.com/hooks use_profile_webhooks: true type: MMS CreateMessageTemplateRequest: title: CreateMessageTemplateRequest description: The request body when creating a message template. required: - text type: object properties: text: example: 'Your {{app_name}} verification code is: {{code}}.' type: string description: The text content of the message template. CreateMessagingHostedNumberOrderRequest: type: object example: messaging_profile_id: dc8f39ac-953d-4520-b93b-786ae87db0da phone_numbers: - '+18665550001' - '+18665550002' properties: phone_numbers: type: array items: type: string x-format: +E.164 description: Phone numbers to be used for hosted messaging. messaging_profile_id: type: string description: Automatically associate the number with this messaging profile ID when the order is complete. CreateMessagingProfileRequest: type: object required: - name - whitelisted_destinations properties: name: description: A user friendly name for the messaging profile. type: string whitelisted_destinations: description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]` all destinations will be allowed. type: array items: description: ISO 3166-1 alpha-2 country code. type: string pattern: ^[A-Z]{2}$ enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean default: true webhook_url: description: The URL where webhooks related to this messaging profile will be sent. type: - string - 'null' format: url default: '' webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. type: - string - 'null' format: url default: '' webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. type: string enum: - '1' - '2' - '2010-04-01' default: '2' number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. type: string pattern: ^[0-9]+(?:\.[0-9]+)?$ daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean mms_fall_back_to_sms: description: enables SMS fallback for MMS messages. type: boolean default: false mms_transcoding: description: enables automated resizing of MMS media. type: boolean default: false mobile_only: description: Send messages only to mobile phone numbers. type: boolean default: false smart_encoding: description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean default: false resource_group_id: type: - string - 'null' maxLength: 64 description: The resource group ID to associate with this messaging profile. health_webhook_url: type: - string - 'null' format: url description: A URL to receive health check webhooks for numbers in this profile. ai_assistant_id: type: - string - 'null' maxLength: 64 description: The AI assistant ID to associate with this messaging profile. example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000 example: name: My name enabled: true webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks webhook_api_version: '2' number_pool_settings: toll_free_weight: 10 long_code_weight: 1 skip_unhealthy: true sticky_sender: false geomatch: false url_shortener_settings: domain: example.ex prefix: '' replace_blacklist_only: true send_webhooks: false whitelisted_destinations: - US CreateMissionRequest: properties: name: type: string title: Name description: title: Description type: string model: title: Model type: string instructions: title: Instructions type: string execution_mode: $ref: '#/components/schemas/ExecutionMode' default: external metadata: title: Metadata additionalProperties: true type: object type: object required: - name title: CreateMissionRequest CreateMissionRunRequest: properties: input: title: Input additionalProperties: true type: object metadata: title: Metadata additionalProperties: true type: object type: object title: CreateMissionRunRequest CreateMsgReq: properties: role: type: string title: Role content: type: string title: Content default: '' name: type: string title: Name tool_choice: anyOf: - type: string - type: object title: ToolChoiceObject title: Tool Choice tool_calls: items: type: object additionalProperties: true type: array title: Tool Calls tool_call_id: type: string title: Tool Call Id sent_at: type: string format: date-time title: Sent At metadata: type: object additionalProperties: anyOf: - type: string - type: integer - type: boolean - items: anyOf: - type: string - type: integer - type: boolean type: array title: Metadata type: object required: - role title: CreateMsgReq CreateMultiPartDocServiceDocumentRequest: type: object properties: file: description: The file you are uploading. type: string format: binary customer_reference: type: string description: Optional reference string for customer tracking. example: MY REF 001 CreateNumberBlockOrderRequest: required: - starting_number - range properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true record_type: type: string example: number_block_order readOnly: true starting_number: type: string description: Starting phone number block example: '+19705555000' writeOnly: true range: type: integer description: The phone number range included in the block. example: 10 writeOnly: true phone_numbers_count: type: integer description: The count of phone numbers in the number order. example: 10 readOnly: true connection_id: type: string example: '346789098765567' description: Identifies the connection associated with this phone number. messaging_profile_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. status: type: string enum: - pending - success - failure description: The status of the order. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the number order was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number order was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true requirements_met: type: boolean description: True if all requirements are met for every phone number, false otherwise. example: true readOnly: true errors: type: string description: Errors the reservation could happen upon example: Number is already on hold readOnly: true example: starting_number: '+19705555000' range: 10 type: object CreateNumberOrderRequest: properties: phone_numbers: type: array items: type: object properties: phone_number: type: string description: e164_phone_number example: '+19705555098' requirement_group_id: type: string description: ID of requirement group to use to satisfy number requirements example: dbbd94ee-9079-488f-80ba-f566b247fd7 bundle_id: type: string description: ID of bundle to associate the number to example: bc8e4d67-33a0-4cbb-af74-7b58f05bd494 required: - phone_number writeOnly: true connection_id: type: string example: '346789098765567' description: Identifies the connection associated with this phone number. messaging_profile_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. billing_group_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the billing group associated with the phone number. customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 example: phone_numbers: - phone_number: '+19705555098' bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd494 - phone_number: '+492111609539' requirement_group_id: dbbd94ee-9079-488f-80ba-f566b247fd79 connection_id: '346789098765567' messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600 billing_group_id: abc85f64-5717-4562-b3fc-2c9600 customer_reference: MY REF 001 type: object CreateNumberPoolMessageRequest: type: object required: - to - messaging_profile_id properties: messaging_profile_id: type: string description: Unique identifier for a messaging profile. to: $ref: '#/components/schemas/ToNumber' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' subject: type: string description: Subject of multimedia message media_urls: description: 'A list of media URLs. The total media size must be less than 1 MB. **Required for MMS**' type: array items: type: string format: url webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url webhook_failover_url: description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. type: string format: url use_profile_webhooks: type: boolean description: If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile. default: true type: description: The protocol for sending the message, either SMS or MMS. type: string enum: - SMS - MMS auto_detect: description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts. type: boolean default: false encoding: type: string description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting. enum: - auto - gsm7 - ucs2 default: auto example: messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000 to: '+13125550002' text: Hello, World! subject: From Telnyx! media_urls: - http://example.com webhook_url: http://example.com/webhooks webhook_failover_url: https://backup.example.com/hooks use_profile_webhooks: true type: MMS CreateNumberReservationRequest: properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true record_type: type: string example: number_reservation readOnly: true phone_numbers: type: array items: $ref: '#/components/schemas/ReservedPhoneNumber' status: type: string enum: - pending - success - failure description: The status of the entire reservation. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the numbers reservation was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number reservation was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true example: id: 12ade33a-21c0-473b-b055-b3c836e1c292 record_type: number_reservation phone_numbers: - id: 12ade33a-21c0-473b-b055-b3c836e1c292 record_type: reserved_phone_number phone_number: '+19705555098' status: pending created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' expired_at: '2018-01-01T00:00:00.000000Z' errors: Number is already on hold status: pending customer_reference: MY REF 001 created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' type: object CreateOAuthGrantRequest: type: object properties: allowed: type: boolean description: Whether the grant is allowed consent_token: type: string description: Consent token required: - allowed - consent_token additionalProperties: false CreateOutboundVoiceProfileRequest: type: object title: Outbound Voice Profile required: - name example: name: office traffic_type: conversational service_plan: global concurrent_call_limit: 10 enabled: true tags: - office-profile usage_payment_method: rate-deck whitelisted_destinations: - US - BR - AU max_destination_rate: 10 daily_spend_limit: '100.00' daily_spend_limit_enabled: true billing_group_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 calling_window: start_time: 08:00:00.00Z end_time: 20:00:00.00Z calls_per_cld: 5 properties: name: type: string description: A user-supplied name to help with organization. example: office minLength: 3 traffic_type: $ref: '#/components/schemas/TrafficType' service_plan: $ref: '#/components/schemas/ServicePlan' concurrent_call_limit: type: - integer - 'null' description: Must be no more than your global concurrent call limit. Null means no limit. example: 10 enabled: type: boolean description: Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections. example: true default: true tags: type: array items: type: string example: - office-profile usage_payment_method: $ref: '#/components/schemas/UsagePaymentMethod' whitelisted_destinations: type: array items: type: string description: The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2. example: - US - BR - AU default: - US - CA max_destination_rate: type: number description: Maximum rate (price per minute) for a Destination to be allowed when making outbound calls. daily_spend_limit: type: string description: The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile in a day before disallowing new calls. example: '100.00' daily_spend_limit_enabled: type: boolean description: Specifies whether to enforce the daily_spend_limit on this outbound voice profile. example: true default: false call_recording: $ref: '#/components/schemas/OutboundCallRecording' billing_group_id: type: - string - 'null' format: uuid description: The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned). example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 default: null calling_window: type: object description: Specifies the time window and call limits for calls made using this outbound voice profile. Note that all times are UTC in 24-hour clock time. example: start_time: 08:00:00.00Z end_time: 20:00:00.00Z calls_per_cld: 5 properties: start_time: type: string description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start. example: 08:00:00.00Z format: time end_time: type: string description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start. example: 20:00:00.00Z format: time calls_per_cld: type: integer description: The maximum number of calls that can be initiated to a single called party (CLD) within the calling window. A null value means no limit. example: 5 minimum: 0 CreatePlanRequest: properties: steps: items: $ref: '#/components/schemas/CreatePlanStepRequest' type: array title: Steps type: object required: - steps title: CreatePlanRequest CreatePlanStepRequest: properties: step_id: type: string title: Step Id description: type: string title: Description sequence: type: integer title: Sequence parent_step_id: title: Parent Step Id type: string metadata: title: Metadata additionalProperties: true type: object type: object required: - step_id - description - sequence title: CreatePlanStepRequest CreatePortingOrder: type: object title: CreatePortingOrder required: - phone_numbers properties: phone_numbers: type: array items: type: string description: The list of +E.164 formatted phone numbers example: - '+13035550000' - '+13035550001' - '+13035550002' customer_reference: type: - string - 'null' description: A customer-specified reference number for customer bookkeeping purposes example: Acct 123abc customer_group_reference: type: string description: A customer-specified group reference for customer bookkeeping purposes example: Group-456 CreatePortingOrderComment: type: object properties: body: type: string example: Please, let me know when the port completes CreatePronunciationDictRequest: type: object description: Request body for creating a pronunciation dictionary. required: - name - items properties: name: type: string description: Human-readable name. Must be unique within the organization. minLength: 1 maxLength: 255 example: Brand Names items: type: array description: List of pronunciation items (alias or phoneme type). At least one item is required. minItems: 1 maxItems: 100 items: $ref: '#/components/schemas/PronunciationDictItem' CreateQueueRequest: type: object title: Create Queue Request required: - queue_name properties: queue_name: description: The name of the queue. Must be between 1 and 255 characters. type: string minLength: 1 maxLength: 255 example: tier_1_support max_size: description: The maximum number of calls allowed in the queue. type: integer minimum: 1 default: 300 example: 100 example: queue_name: tier_1_support max_size: 100 CreateRequirementVersionRequest: type: object required: - effective_start_at - requirement_type_ids properties: effective_start_at: description: ISO 8601 formatted date-time indicating when the new version should become active. Must be a future date-time. type: string format: date-time example: '2026-08-01T00:00:00.000Z' requirement_type_ids: description: List of requirement type UUIDs that apply to the new version. Replaces the existing requirement types for the new version. type: array items: type: string format: uuid example: - a38c217a-8019-48f8-bff6-0fdd9939075b CreateRoomClientTokenRequest: type: object properties: token_ttl_secs: description: The time to live in seconds of the Client Token, after that time the Client Token is invalid and can't be used to join a Room. type: integer example: 600 default: 600 minimum: 10 maximum: 3600 refresh_token_ttl_secs: description: The time to live in seconds of the Refresh Token, after that time the Refresh Token is invalid and can't be used to refresh Client Token. type: integer example: 3600 default: 3600 minimum: 60 maximum: 86400 CreateRoomCompositionRequest: type: object properties: format: description: The desired format of the room composition. type: string example: mp4 default: mp4 resolution: description: The desired resolution (width/height in pixels) of the resulting video of the room composition. Both width and height are required to be between 16 and 1280; and width * height should not exceed 1280 * 720 type: string example: 800x600 default: 1280x720 session_id: description: id of the room session associated with the room composition. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 video_layout: description: Describes the video layout of the room composition in terms of regions. type: object additionalProperties: $ref: '#/components/schemas/VideoRegion' webhook_event_url: type: string format: uri description: The URL where webhooks related to this room composition will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: string format: uri description: The failover URL where webhooks related to this room composition will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_timeout_secs: type: integer minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null CreateRoomRequest: type: object properties: unique_name: description: The unique (within the Telnyx account scope) name of the room. type: string example: My room max_participants: description: The maximum amount of participants allowed in a room. If new participants try to join after that limit is reached, their request will be rejected. type: integer example: 10 default: 10 minimum: 2 maximum: 50 enable_recording: description: Enable or disable recording for that room. type: boolean example: true default: false webhook_event_url: type: string format: uri description: The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: string format: uri description: The failover URL where webhooks related to this room will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_timeout_secs: type: integer minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null CreateScheduledEventRequest: properties: telnyx_conversation_channel: $ref: '#/components/schemas/ConversationChannelType' telnyx_end_user_target: type: string description: The phone number, SIP URI, to schedule the call or text to. title: Telnyx End User Target telnyx_agent_target: type: string description: The phone number, SIP URI, to schedule the call or text from. title: Telnyx Agent Target scheduled_at_fixed_datetime: type: string format: date-time description: The datetime at which the event should be scheduled. Formatted as ISO 8601. example: '2025-04-15T13:07:28.764Z' title: Scheduled At Fixed Datetime text: type: string description: Required for sms scheduled events. The text to be sent to the end user. conversation_metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean type: object description: Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers can also add their own. title: Conversation Metadata dynamic_variables: additionalProperties: type: string type: object description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax. title: Dynamic Variables max_retries_client_errors: type: integer maximum: 10.0 minimum: 0.0 title: Max Retries Client Errors description: 'Configure number of retries on client errors: busy, no-answer, failed, canceled (caller hung up before the callee answered)' default: 0 retry_interval_secs: title: Retry Interval Secs type: integer maximum: 86400.0 minimum: 60.0 call_settings: $ref: '#/components/schemas/ScheduledCallSettings' type: object required: - telnyx_conversation_channel - telnyx_end_user_target - telnyx_agent_target - scheduled_at_fixed_datetime title: CreateScheduledEventRequest CreateScheduledMessageRequest: type: object required: - to properties: from: type: string description: 'Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). **Required if sending with a phone number, short code, or alphanumeric sender ID.** ' x-format: address messaging_profile_id: type: string description: 'Unique identifier for a messaging profile. **Required if sending via number pool or with an alphanumeric sender ID.** ' to: $ref: '#/components/schemas/ToNumber' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' subject: type: string description: Subject of multimedia message media_urls: description: 'A list of media URLs. The total media size must be less than 1 MB. **Required for MMS**' type: array items: type: string format: url webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url webhook_failover_url: description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. type: string format: url use_profile_webhooks: type: boolean description: If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile. default: true type: description: The protocol for sending the message, either SMS or MMS. type: string enum: - SMS - MMS auto_detect: description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts. type: boolean default: false send_at: description: ISO 8601 formatted date indicating when to send the message - accurate up till a minute. type: string format: date-time example: from: '+18445550001' messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000 to: '+18445550001' text: Hello, World! subject: From Telnyx! webhook_url: http://example.com/webhooks webhook_failover_url: https://backup.example.com/hooks use_profile_webhooks: true type: SMS send_at: '2019-01-23T18:30:00Z' CreateSharedToolRequest: properties: type: type: string title: Type display_name: type: string title: Display Name function: title: Function additionalProperties: true type: object retrieval: title: Retrieval additionalProperties: true type: object handoff: title: Handoff additionalProperties: true type: object invite: title: Invite additionalProperties: true type: object webhook: title: Webhook additionalProperties: true type: object pay: $ref: '#/components/schemas/PayToolParams' title: Pay client_side_tool: title: Client Side Tool additionalProperties: true type: object update_dynamic_variables: $ref: '#/components/schemas/UpdateDynamicVariablesToolParams' title: Update Dynamic Variables vision: $ref: '#/components/schemas/VisionToolParams' title: Vision timeout_ms: type: integer title: Timeout Ms default: 5000 additionalProperties: true type: object required: - type - display_name title: CreateSharedToolRequest description: Request model for creating a shared (org-level) tool. CreateShortCodeMessageRequest: type: object required: - from - to properties: from: type: string description: Phone number, in +E.164 format, used to send the message. x-format: address to: $ref: '#/components/schemas/ToNumber' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' subject: type: string description: Subject of multimedia message media_urls: description: 'A list of media URLs. The total media size must be less than 1 MB. **Required for MMS**' type: array items: type: string format: url webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url webhook_failover_url: description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. type: string format: url use_profile_webhooks: type: boolean description: If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile. default: true type: description: The protocol for sending the message, either SMS or MMS. type: string enum: - SMS - MMS auto_detect: description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts. type: boolean default: false encoding: type: string description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting. enum: - auto - gsm7 - ucs2 default: auto example: from: '+18445550001' to: '+18445550001' text: Hello, World! subject: From Telnyx! media_urls: - http://example.com webhook_url: http://example.com/webhooks webhook_failover_url: https://backup.example.com/hooks use_profile_webhooks: true type: MMS CreateSpendLimitRequest: description: 'Send exactly one of `amount` and `unlimited: true`.' oneOf: - $ref: '#/components/schemas/CreateSpendLimitWithAmount' - $ref: '#/components/schemas/CreateSpendLimitUnlimited' CreateSpendLimitUnlimited: title: Unlimited description: Explicitly no cap. 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. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be set when the outbound object parameter call_parking_enabled is included and set to true. enum: - '1' - '2' - texml example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/UacInboundRequest' outbound: $ref: '#/components/schemas/UacOutbound' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' internal_uac_settings: $ref: '#/components/schemas/UacInternalSettings' external_uac_settings: $ref: '#/components/schemas/UacExternalSettings' example: active: true password: my123secure456password789 user_name: myusername123 anchorsite_override: Latency connection_name: my name sip_uri_calling_preference: disabled default_on_hold_comfort_noise_enabled: false dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true simultaneous_ringing: disabled outbound: call_parking_enabled: true ani_override: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: US t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 internal_uac_settings: destination_uri: 14155550123@acme.sip.telnyx.com external_uac_settings: username: ext8492 password: testtesttest proxy: sip-pbx.acme.example auth_username: auth8492 from_user: '8492' outbound_proxy: outbound.sip-pbx.acme.example:5061 expiration_sec: 600 transport: TLS user_agent: Telnyx-Usage-Voice-Trunk/1.0 bridge_generate_comfort_noise_on_cn: false description: A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration. CreateUnsubscribeGroupRequest: type: object required: - name properties: name: type: string minLength: 1 maxLength: 255 description: type: string nullable: true CreateUserBundlesBulkRequest: properties: idempotency_key: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 description: Idempotency key for the request. Can be any UUID, but should always be unique for each request. items: type: array items: type: object properties: billing_bundle_id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 description: Quantity of user bundles to order. quantity: type: integer description: Quantity of user bundles to order. required: - billing_bundle_id - quantity writeOnly: true type: object CreateVerificationRequest: title: CreateVerificationRequest description: The request body when creating a verification. required: - phone_number - verify_profile_id type: object properties: phone_number: example: '+13035551234' type: string description: +E164 formatted phone number. verify_profile_id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 type: string format: uuid description: The identifier of the associated Verify profile. timeout_secs: type: integer example: 300 description: The number of seconds the verification code is valid for. CreateVerificationRequestCall: title: CreateVerificationRequestCall description: The request body when creating a verification. required: - phone_number - verify_profile_id type: object properties: phone_number: example: '+13035551234' type: string description: +E164 formatted phone number. verify_profile_id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 type: string format: uuid description: The identifier of the associated Verify profile. custom_code: example: '43612' type: - string - 'null' description: Send a self-generated numeric code to the end-user default: null timeout_secs: type: integer example: 300 description: The number of seconds the verification code is valid for. extension: example: 1www2WABCDw9 type: - string - 'null' description: 'Optional extension to dial after call is answered using DTMF digits. Valid digits are 0-9, A-D, *, and #. Pauses can be added using w (0.5s) and W (1s).' default: null CreateVerificationRequestSMS: title: CreateVerificationRequestSMS description: The request body when creating a verification. required: - phone_number - verify_profile_id type: object properties: phone_number: example: '+13035551234' type: string description: +E164 formatted phone number. verify_profile_id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 type: string format: uuid description: The identifier of the associated Verify profile. custom_code: example: '43612' type: - string - 'null' description: Send a self-generated numeric code to the end-user default: null timeout_secs: type: integer example: 300 description: The number of seconds the verification code is valid for. CreateVerificationRequestWhatsapp: title: CreateVerificationRequestWhatsapp description: The request body when creating a WhatsApp verification. required: - phone_number - verify_profile_id type: object properties: phone_number: example: '+13035551234' type: string description: +E164 formatted phone number. verify_profile_id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 type: string format: uuid description: The identifier of the associated Verify profile. custom_code: example: '43612' type: - string - 'null' description: Send a self-generated numeric code to the end-user default: null timeout_secs: type: integer example: 300 description: The number of seconds the verification code is valid for. CreateVerificationResponse: title: CreateVerifyVerificationResponse required: - data type: object properties: data: $ref: '#/components/schemas/Verification' CreateVerifiedNumberResponse: title: CreateVerifiedNumberResponse type: object properties: phone_number: example: '+15551234567' type: string verification_method: example: sms type: string CreateVerifyProfileCallRequest: title: CreateVerifyProfileCallRequest type: object properties: messaging_template_id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string description: The message template identifier selected from /verify_profiles/templates app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ code_length: example: 6 type: integer description: The length of the verify code to generate. default: 5 whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 CreateVerifyProfileSMSRequest: title: CreateVerifyProfileSMSRequest type: object properties: messaging_template_id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string description: The message template identifier selected from /verify_profiles/templates app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ default: Telnyx code_length: example: 6 type: integer description: The length of the verify code to generate. default: 5 whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 CreateVerifyProfileSettingsRequest: title: CreateVerifyProfileSettingsRequest type: object properties: whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 CreateVerifyProfileSettingsWhatsAppRequest: title: CreateVerifyProfileSettingsWhatsAppRequest type: object properties: whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 waba_id: example: '1234567890' type: - string - 'null' description: Customer Meta WABA ID for Bring-Your-Own-WABA sending default: null sender_phone_number: example: '+13035551234' type: - string - 'null' description: Phone number registered on the customer WABA to send OTPs from default: null template_id: example: authentication_template_id type: - string - 'null' description: Customer pre-approved authentication template ID registered on Meta default: null CreatedAt: title: Created At type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2020-02-02T22:25:27.521Z' CreatedUserBundlesResponse: title: CreatedUserBundlesResponse required: - data type: object properties: data: type: array items: $ref: '#/components/schemas/UserBundle' CreatedVerificationCodesResponse: type: object properties: data: type: array items: type: object title: VerificationCodeResult description: Verification code result response required: - phone_number properties: phone_number: type: string x-format: +E.164 description: Phone number for which the verification code was created verification_code_id: type: string format: uuid description: Unique identifier for the verification code type: type: string enum: - sms - call description: Type of verification method used error: type: string description: Error message describing why the verification code creation failed required: - data CredentialActive: title: Credential Active description: If the credential associated with this service is active. type: boolean default: false example: true CredentialConnection: type: object title: Credential Connection properties: id: type: string description: Identifies the type of resource. example: '1293384261075731499' x-format: int64 record_type: type: string description: Identifies the type of the resource. example: credential_connection active: type: boolean description: Defaults to true conversation_persistence: type: boolean description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false. user_name: type: string description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters). At least one of the first 5 characters must be a letter. example: myusername123 password: type: string description: The password to be used as part of the credentials. Must be 8 to 128 characters long. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected. example: my123secure456password789 created_at: type: string description: ISO-8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO-8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: type: string sip_uri_calling_preference: type: string example: disabled description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal). enum: - disabled - unrestricted - internal default_on_hold_comfort_noise_enabled: type: boolean default: true description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/CredentialInbound' outbound: $ref: '#/components/schemas/CredentialOutbound' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: credential_connection active: true user_name: myusername123 password: my123secure456password789 created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' anchorsite_override: Latency connection_name: string sip_uri_calling_preference: disabled default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' call_cost_in_webhooks: false webhook_timeout_secs: 25 tags: - tag1 - tag2 rtcp_settings: port: rtp+1 capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true timeout_1xx_secs: 10 timeout_2xx_secs: 15 shaken_stir_enabled: true simultaneous_ringing: enabled outbound: call_parking_enabled: true ani_override: string ani_override_type: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: string t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false CredentialInbound: type: object title: Credential Inbound example: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 default_routing_method: sequential channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true simultaneous_ringing: enabled properties: ani_number_format: type: string enum: - +E.164 - E.164 - +E.164-national - E.164-national default: E.164-national description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls. dnis_number_format: type: string enum: - +e164 - e164 - national - sip_username default: e164 codecs: type: array items: type: string description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.' default: - G722 - G711U - G711A - G729 - OPUS - H.264 default_routing_method: type: string enum: - sequential - round-robin description: Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed. channel_limit: type: integer default: null description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. isup_headers_enabled: type: boolean default: false description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.) prack_enabled: type: boolean description: Enable PRACK messages as defined in RFC3262. default: false sip_compact_headers_enabled: type: boolean description: Defaults to true. default: true timeout_1xx_secs: type: integer description: Time(sec) before aborting if connection is not made. minimum: 1 maximum: 120 default: 3 timeout_2xx_secs: type: integer description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).' minimum: 1 maximum: 600 default: 90 shaken_stir_enabled: type: boolean description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport. default: false simultaneous_ringing: type: string description: When enabled, allows multiple devices to ring simultaneously on incoming calls. default: disabled enum: - disabled - enabled CredentialOutbound: type: object title: Credential Outbound example: call_parking_enabled: true ani_override: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: US t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' properties: call_parking_enabled: type: - boolean - 'null' default: false description: Forces all SIP calls originated on this connection to be "parked" instead of "bridged" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next. ani_override: type: string description: Set a phone number as the ani_override value to override caller id number on outbound calls. default: '' ani_override_type: type: string enum: - always - normal - emergency description: Specifies when we apply your ani_override setting. Only applies when ani_override is not blank. default: always channel_limit: type: integer default: null description: When set, this will limit the total number of outbound calls to phone numbers associated with this connection. instant_ringback_enabled: type: boolean default: true description: When set, ringback will not wait for indication before sending ringback tone to calling party. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. localization: type: string default: US description: A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default. example: US t38_reinvite_source: type: string enum: - telnyx - customer - disabled - passthru - caller-passthru - callee-passthru description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.

By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite. default: telnyx outbound_voice_profile_id: $ref: '#/components/schemas/connections_OutboundVoiceProfileId' Credentials: description: Opaque credential token used to authenticate and authorize with storage provider. type: string example: OPAQUE_CREDENTIALS_TOKEN CredentialsResponse: type: object title: CredentialsResponse required: - data - connection_id - record_type properties: data: $ref: '#/components/schemas/CustomStorageConfiguration' connection_id: $ref: '#/components/schemas/ConnectionIdCredentials' record_type: $ref: '#/components/schemas/RecordType' CsvDownload: type: object properties: id: type: string example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 description: Identifies the resource. readOnly: true record_type: type: string example: csv_download description: Identifies the type of the resource. readOnly: true url: type: string example: https://www.telnyx.com/sample/42587e44-3a3e-46de-9255-0c9a7a1d1ec7 description: The URL at which the CSV file can be retrieved. status: type: string enum: - pending - complete - failed - expired default: pending example: pending description: Indicates the completion level of the CSV report. Only complete CSV download requests will be able to be retrieved. example: id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 record_type: csv_download url: https://www.telnyx.com/sample/42587e44-3a3e-46de-9255-0c9a7a1d1ec7 status: pending Cursor: type: object properties: after: type: string description: Opaque identifier of next page. example: v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI= before: type: string description: Opaque identifier of previous page. example: v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI= CursorMeta: type: object required: - page_size - has_next - has_previous properties: page_size: type: integer next_cursor: type: string description: Omitted when `has_next` is false. previous_cursor: type: string description: Omitted when `has_previous` is false. has_next: type: boolean has_previous: type: boolean CursorPaginationMeta: type: object title: Cursor Pagination Meta properties: cursors: $ref: '#/components/schemas/Cursor' total_items: type: integer example: 50 next: type: string description: Path to next page. example: /v2/connections/1234567890/active_calls?page[after]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI= previous: type: string description: Path to previous page. example: /v2/connections/1234567890/active_calls?page[before]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI= CustomSipHeader: type: object title: Custom SIP Header required: - name - value properties: name: description: The name of the header to add. type: string example: head_1 value: description: The value of the header. type: string example: val_1 example: name: head_1 value: val_1 CustomStorageConfiguration: type: object title: Custom Storage Configuration required: - backend - configuration properties: backend: type: string enum: - gcs - s3 - s3-generic - azure example: gcs configuration: oneOf: - $ref: '#/components/schemas/GCSConfigurationData' - $ref: '#/components/schemas/S3ConfigurationData' - $ref: '#/components/schemas/S3GenericConfigurationData' - $ref: '#/components/schemas/AzureConfigurationData' discriminator: propertyName: backend mapping: gcs: '#/components/schemas/GCSConfigurationData' s3: '#/components/schemas/S3ConfigurationData' s3-generic: '#/components/schemas/S3GenericConfigurationData' azure: '#/components/schemas/AzureConfigurationData' CustomerServiceRecord: type: object properties: id: description: Uniquely identifies this customer service record type: string format: uuid example: f1486bae-f067-460c-ad43-73a92848f902 readOnly: true phone_number: description: The phone number of the customer service record. type: string example: '+12065551212' status: description: The status of the customer service record type: string enum: - pending - completed - failed example: completed error_message: description: The error message in case status is `failed`. This field would be null in case of `pending` or `completed` status. type: - string - 'null' example: CSR information not available. result: description: The result of the CSR request. This field would be null in case of `pending` or `failed` status. type: - object - 'null' properties: carrier_name: description: The name of the carrier that the customer service record is for. type: string example: ABC CARRIER, INC. associated_phone_numbers: description: The associated phone numbers of the customer service record. type: array items: type: string example: '+12065551212' admin: description: The admin of the customer service record. type: object properties: name: description: The name of the customer service record. type: string example: John Doe billing_phone_number: description: The billing phone number of the customer service record. type: string example: '+12065551212' account_number: description: The account number of the customer service record. type: string example: '1234567890' authorized_person_name: description: The authorized person name of the customer service record. type: string example: John Doe address: description: The address of the customer service record type: object properties: administrative_area: description: The state of the address type: string example: NY locality: description: The city of the address type: string example: New York postal_code: description: The zip code of the address type: string example: '10001' street_address: description: The street address type: string example: 123 Main St full_address: description: The full address type: string example: 123 Main St; New York; NY; 10001 webhook_url: type: string description: Callback URL to receive webhook notifications. example: https://example.com/webhook record_type: type: string example: customer_service_record description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527Z' readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527Z' readOnly: true CustomerServiceRecordAdditionalData: type: object properties: name: description: The name of the administrator of CSR. type: string example: Entity Inc. authorized_person_name: description: The name of the authorized person. type: string example: John Doe pin: description: The PIN of the customer service record. type: string example: '1234' account_number: description: The account number of the customer service record. type: string example: '123456789' customer_code: description: The customer code of the customer service record. type: string example: '123456789' address_line_1: description: The first line of the address of the customer service record. type: string example: 123 Main St city: description: The city of the customer service record. type: string example: New York state: description: The state of the customer service record. type: string example: NY maxLength: 2 pattern: ^[A-Z]{2}$ zip_code: description: The zip code of the customer service record. type: string example: '10001' maxLength: 5 pattern: ^\d{5}$ billing_phone_number: description: The billing phone number of the customer service record. type: string example: '+12065551212' pattern: ^\+1\d{10}$ CustomerServiceRecordPhoneNumberCoverage: type: object properties: phone_number: type: string description: The phone number that is being verified. example: '+12223334444' has_csr_coverage: type: boolean description: Indicates whether the phone number is covered or not. example: true reason: type: string description: The reason why the phone number is not covered. Only returned if `has_csr_coverage` is false. example: The phone number '+19999999999' is invalid. additional_data_required: type: array description: Additional data required to perform CSR for the phone number. Only returned if `has_csr_coverage` is true. items: type: string enum: - name - authorized_person_name - account_number - customer_code - pin - address_line_1 - city - state - zip_code - billing_phone_number example: name record_type: type: string description: Identifies the type of the resource. example: customer_service_record_phone_number_coverage DKIMStatus: type: object required: - selector - algorithm - key_length - active - rotated_at properties: selector: type: string nullable: true algorithm: type: string enum: - rsa-sha256 - null nullable: true key_length: type: integer enum: - 2048 - null nullable: true active: type: boolean rotated_at: type: string format: date-time nullable: true DNSRecord: type: object required: - id - purpose - record_type - host - value - required - status properties: id: type: string format: uuid purpose: type: string enum: - ownership - spf - dkim - dmarc - mx record_type: type: string enum: - TXT - MX host: type: string value: type: string actual_value: type: string nullable: true priority: type: integer nullable: true required: type: boolean status: type: string enum: - pending - verified - failed - not_required example: id: 123e4567-e89b-12d3-a456-426614174001 purpose: ownership record_type: TXT host: _telnyx-email.example.com value: telnyx-domain-verification=abc123 actual_value: null priority: null required: true status: pending DNSRecordListResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/DNSRecord' DTMFTool: properties: type: type: string enum: - send_dtmf shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true send_dtmf: type: object additionalProperties: true type: object required: - type - send_dtmf title: DTMFTool DailySendLimitError: type: object description: Error envelope returned when the account's daily recipient quota is exhausted before message creation. required: - errors properties: errors: type: array minItems: 1 maxItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - '10011' title: type: string example: Too Many Requests detail: type: string example: Daily send limit of 1000 recipients exceeded. The limit resets at midnight UTC. DateTimeRFC2822: type: string format: date-time example: '2023-08-11T19:12:11Z' DecisionModelAnswer: description: An answer whose type matches its question. oneOf: - $ref: '#/components/schemas/DecisionModelChoiceAnswer' - $ref: '#/components/schemas/DecisionModelNoulAnswer' - $ref: '#/components/schemas/DecisionModelScoreAnswer' discriminator: propertyName: type mapping: choice: '#/components/schemas/DecisionModelChoiceAnswer' noul: '#/components/schemas/DecisionModelNoulAnswer' score: '#/components/schemas/DecisionModelScoreAnswer' DecisionModelChoiceAnswer: type: object description: A selected option and the distribution across all supplied option keys. properties: type: type: string description: Answer type. enum: - choice choice: type: string description: The option key with the highest relative score. Ties favor the first option in request order. probabilities: $ref: '#/components/schemas/DecisionModelProbabilities' confidence: $ref: '#/components/schemas/DecisionModelConfidence' required: - type - choice - probabilities - confidence additionalProperties: false example: type: choice choice: technical_support probabilities: billing: 0.0024719786572585446 technical_support: 0.9972674768333701 sales: 0.00026054450937119613 confidence: 0.9820522416354122 DecisionModelChoiceQuestion: type: object description: Select one of the supplied options. properties: type: type: string description: Question type. enum: - choice instructions: $ref: '#/components/schemas/DecisionModelContent' description: Required instructions describing what to decide about the shared state. criteria: type: object description: Between 2 and 64 option keys mapped to description strings or null. A null description uses the option key as its text. minProperties: 2 maxProperties: 64 additionalProperties: type: - string - 'null' required: - type - instructions - criteria additionalProperties: false example: type: choice instructions: Choose the team that should handle this incident. criteria: billing: Payments and refunds technical_support: Service faults and technical problems sales: New purchases DecisionModelConfidence: type: number description: 'Normalized entropy confidence: 1 - H(p) / ln(N), where H(p) = -sum(p * ln(p)) and N is the number of options. Zero indicates a uniform distribution; one indicates concentration on one option. This is neither the winning probability nor calibrated correctness.' minimum: 0 maximum: 1 DecisionModelContent: description: Text, a JSON object, or an array containing text-based context. Text-only conversation histories are supported; image and audio inputs are not supported. oneOf: - type: string - type: object additionalProperties: true - type: array items: {} DecisionModelError: type: object description: A decision model service error. properties: error: type: object description: Error details. properties: message: type: string description: Human-readable explanation of the failure. required: - message additionalProperties: false required: - error additionalProperties: false DecisionModelNoulAnswer: type: object description: A yes/no score with no separate confidence or probabilities fields. properties: type: type: string description: Answer type. enum: - noul noul: type: number description: Score of the positive outcome. Values near 1 favor yes; values near 0 favor no. This is a number, not a Boolean, and is not calibrated correctness. minimum: 0 maximum: 1 required: - type - noul additionalProperties: false example: type: noul noul: 0.9991959141264766 DecisionModelNoulCriteria: type: object description: Optional descriptions for the positive and negative outcomes. Descriptions must be strings. properties: 'true': type: string description: Description of the positive outcome. default: 'Yes' 'false': type: string description: Description of the negative outcome. default: 'No' required: [] additionalProperties: false default: 'true': 'Yes' 'false': 'No' DecisionModelNoulQuestion: type: object description: Evaluate a yes/no question. Omit criteria to use Yes and No descriptions. properties: type: type: string description: Question type. enum: - noul instructions: $ref: '#/components/schemas/DecisionModelContent' description: Required instructions describing what to decide about the shared state. criteria: $ref: '#/components/schemas/DecisionModelNoulCriteria' required: - type - instructions additionalProperties: false example: type: noul instructions: Does the message describe an active production incident? DecisionModelProbabilities: type: object description: Relative scores normalized across the supplied options, summing approximately to 1. These are not calibrated probabilities of correctness. minProperties: 2 maxProperties: 64 additionalProperties: type: number minimum: 0 maximum: 1 DecisionModelQuestion: description: A choice, yes/no, or ordered-score question. oneOf: - $ref: '#/components/schemas/DecisionModelChoiceQuestion' - $ref: '#/components/schemas/DecisionModelNoulQuestion' - $ref: '#/components/schemas/DecisionModelScoreQuestion' discriminator: propertyName: type mapping: choice: '#/components/schemas/DecisionModelChoiceQuestion' noul: '#/components/schemas/DecisionModelNoulQuestion' score: '#/components/schemas/DecisionModelScoreQuestion' DecisionModelRequest: type: object description: Decision Models beta request. Choose a public model alias; omitted model defaults to telnyx/decision-flash. Telnyx manages the underlying models behind these aliases. properties: model: type: string enum: - telnyx/decision-flash - telnyx/decision-pro default: telnyx/decision-flash description: Public model alias. telnyx/decision-flash offers the lowest cost and latency; telnyx/decision-pro supports decisions that require long context, including inputs beyond Jev’s 32k per-decision limit. Applies to every question in the request. Other values are rejected. example: telnyx/decision-flash state: $ref: '#/components/schemas/DecisionModelContent' description: Shared context evaluated by every question. example: Our production calls are failing. Every customer is affected. questions: type: object description: Between 1 and 64 named questions. Each key identifies the corresponding answer. minProperties: 1 maxProperties: 64 additionalProperties: $ref: '#/components/schemas/DecisionModelQuestion' required: - state - questions additionalProperties: false example: model: telnyx/decision-flash state: Our production calls are failing. Every customer is affected. questions: team: type: choice instructions: Choose the team that should handle this incident. criteria: billing: Payments and refunds technical_support: Service faults and technical problems sales: New purchases production_incident: type: noul instructions: Does the message describe an active production incident? urgency: type: score instructions: Rate operational urgency. criteria: - Low - Normal - High - Critical DecisionModelResponse: type: object description: A complete synchronous evaluation. Answers are returned directly without a data wrapper. properties: model: type: string description: Public model alias used to evaluate the request. Returns telnyx/decision-flash when model was omitted. The underlying model is managed by Telnyx. readOnly: true enum: - telnyx/decision-flash - telnyx/decision-pro example: telnyx/decision-flash answers: type: object description: Answers keyed by exactly the question IDs in the request. Each answer type matches its question. minProperties: 1 maxProperties: 64 additionalProperties: $ref: '#/components/schemas/DecisionModelAnswer' usage: $ref: '#/components/schemas/DecisionModelUsage' required: - model - answers - usage additionalProperties: false example: model: telnyx/decision-flash answers: team: type: choice choice: technical_support probabilities: billing: 0.0024719786572585446 technical_support: 0.9972674768333701 sales: 0.00026054450937119613 confidence: 0.9820522416354122 production_incident: type: noul noul: 0.9991959141264766 urgency: type: score score: 2.9974242859177265 legend: '0': Low '1': Normal '2': High '3': Critical probabilities: '0': 0.0003348349100603869 '1': 3.529133987660637e-05 '2': 0.0015006266723396524 '3': 0.9981292470777234 confidence: 0.9894200002646713 usage: input_tokens: 267 output_tokens: 4 DecisionModelScoreAnswer: type: object description: An expected rating over the ordered criteria. properties: type: type: string description: Answer type. enum: - score score: type: number description: 'Expected zero-based criterion index: sum(index * probability). Ranges from 0 to N-1 for N criteria; fractional values are valid.' minimum: 0 maximum: 63 legend: type: object description: Criterion descriptions keyed by stringified zero-based indices, such as "0", "1", and "2". minProperties: 2 maxProperties: 64 additionalProperties: type: string probabilities: $ref: '#/components/schemas/DecisionModelProbabilities' description: Relative scores keyed by the same stringified indices as legend. confidence: $ref: '#/components/schemas/DecisionModelConfidence' required: - type - score - legend - probabilities - confidence additionalProperties: false example: type: score score: 2.9974242859177265 legend: '0': Low '1': Normal '2': High '3': Critical probabilities: '0': 0.0003348349100603869 '1': 3.529133987660637e-05 '2': 0.0015006266723396524 '3': 0.9981292470777234 confidence: 0.9894200002646713 DecisionModelScoreQuestion: type: object description: Rate the state against an ordered rubric. properties: type: type: string description: Question type. enum: - score instructions: $ref: '#/components/schemas/DecisionModelContent' description: Required instructions describing what to decide about the shared state. criteria: type: array description: Between 2 and 64 description strings in ascending score order. Indices start at zero. minItems: 2 maxItems: 64 items: type: string required: - type - instructions - criteria additionalProperties: false example: type: score instructions: Rate operational urgency. criteria: - Low - Normal - High - Critical DecisionModelUsage: type: object description: Token usage for the completed evaluation. properties: input_tokens: type: integer minimum: 0 description: Input tokens processed, including shared-context preparation and question evaluation. This can exceed the token count of the unique input text. output_tokens: type: integer minimum: 0 description: Output tokens used for the evaluation, including shared-context preparation. required: - input_tokens - output_tokens additionalProperties: false DeepgramEnglishTranscriptionLanguage: type: string enum: - en - en-US - en-AU - en-GB - en-IN - en-NZ default: en description: Language to transcribe. Deepgram's medical and phonecall models support English only. DeepgramFluxConfig: type: object title: DeepgramFluxConfig description: Deepgram Flux (English), a conversational speech recognition model with built-in end-of-turn detection. `smart_format`, `utterance_end_ms`, `hints` and `keywords_boosting` do not apply to Flux. properties: transcription_engine: type: string enum: - Deepgram transcription_model: type: string enum: - deepgram/flux interim_results: type: boolean default: false example: true description: Whether to send also interim results. If set to false, only final results will be sent. language: type: string enum: - en default: en description: Language to transcribe. `deepgram/flux` supports English only. keyterms: type: array description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2. items: type: string maxItems: 100 default: [] example: - Telnyx - LiveKit - VoIP additionalProperties: false required: - transcription_engine - transcription_model example: transcription_engine: Deepgram transcription_model: deepgram/flux language: en keyterms: - Telnyx - LiveKit - VoIP DeepgramFluxMultiConfig: type: object title: DeepgramFluxMultiConfig description: Deepgram Flux multilingual, a conversational speech recognition model with built-in end-of-turn detection. `smart_format`, `utterance_end_ms`, `hints` and `keywords_boosting` do not apply to Flux. properties: transcription_engine: type: string enum: - Deepgram transcription_model: type: string enum: - deepgram/flux-multi interim_results: type: boolean default: false example: true description: Whether to send also interim results. If set to false, only final results will be sent. language: $ref: '#/components/schemas/DeepgramFluxMultiTranscriptionLanguage' keyterms: type: array description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2. items: type: string maxItems: 100 default: [] example: - Telnyx - LiveKit - VoIP additionalProperties: false required: - transcription_engine - transcription_model example: transcription_engine: Deepgram transcription_model: deepgram/flux-multi language: es keyterms: - Telnyx - LiveKit - VoIP DeepgramFluxMultiTranscriptionLanguage: type: string enum: - en - es - fr - de - hi - ru - pt - ja - it - nl - auto default: en description: Language to transcribe. Flux-multi uses the language as a hint; `auto` lets Flux detect the language. DeepgramNova2Config: type: object title: DeepgramNova2Config properties: transcription_engine: type: string enum: - Deepgram transcription_model: type: string enum: - deepgram/nova-2 interim_results: type: boolean default: false example: true description: Whether to send also interim results. If set to false, only final results will be sent. utterance_end_ms: type: integer default: 1000 example: 800 minimum: 0 maximum: 5000 description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms. language: $ref: '#/components/schemas/DeepgramNova2TranscriptionLanguage' smart_format: type: boolean default: true example: false description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.' keywords_boosting: type: object description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom": 2, "krieger": 1}`.' additionalProperties: type: number description: Boost intensifier for the keyword. Higher values increase recognition confidence. default: null example: snuffleupagus: 5 systrom: 2 krieger: 1 hints: type: array description: Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted biasing, use `keywords_boosting` instead. Supported on Nova-2 models only (`deepgram/nova-2`, `deepgram/nova-2-medical`, `deepgram/nova-2-phonecall`); use `keyterms` on Nova-3 and Flux. items: type: string maxItems: 100 default: [] example: - Telnyx - LiveKit - VoIP additionalProperties: false required: - transcription_engine - transcription_model example: transcription_engine: Deepgram transcription_model: deepgram/nova-2 language: en smart_format: false hints: - Telnyx - LiveKit - VoIP keywords_boosting: snuffleupagus: 5 systrom: 2 krieger: 1 DeepgramNova2SpecialtyConfig: type: object title: DeepgramNova2SpecialtyConfig properties: transcription_engine: type: string enum: - Deepgram transcription_model: type: string enum: - deepgram/nova-2-medical - deepgram/nova-2-phonecall interim_results: type: boolean default: false example: true description: Whether to send also interim results. If set to false, only final results will be sent. utterance_end_ms: type: integer default: 1000 example: 800 minimum: 0 maximum: 5000 description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms. language: $ref: '#/components/schemas/DeepgramEnglishTranscriptionLanguage' smart_format: type: boolean default: true example: false description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.' keywords_boosting: type: object description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom": 2, "krieger": 1}`.' additionalProperties: type: number description: Boost intensifier for the keyword. Higher values increase recognition confidence. default: null example: snuffleupagus: 5 systrom: 2 krieger: 1 hints: type: array description: Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted biasing, use `keywords_boosting` instead. Supported on Nova-2 models only (`deepgram/nova-2`, `deepgram/nova-2-medical`, `deepgram/nova-2-phonecall`); use `keyterms` on Nova-3 and Flux. items: type: string maxItems: 100 default: [] example: - Telnyx - LiveKit - VoIP additionalProperties: false required: - transcription_engine - transcription_model example: transcription_engine: Deepgram transcription_model: deepgram/nova-2-medical language: en-US smart_format: false hints: - Telnyx - LiveKit - VoIP keywords_boosting: snuffleupagus: 5 systrom: 2 krieger: 1 description: 'Deepgram Nova-2 specialty models: `deepgram/nova-2-medical` (medical vocabulary) and `deepgram/nova-2-phonecall` (low-bandwidth phone audio). English only.' DeepgramNova2TranscriptionLanguage: title: Deepgram nova-2 transcription engine list of languages type: string description: Language to use for speech recognition with nova-2 model example: en default: en enum: - bg - ca - zh - zh-CN - zh-Hans - zh-TW - zh-Hant - zh-HK - cs - da - da-DK - nl - en - en-US - en-AU - en-GB - en-NZ - en-IN - et - fi - nl-BE - fr - fr-CA - de - de-CH - el - hi - hu - id - it - ja - ko - ko-KR - lv - lt - ms - 'no' - pl - pt - pt-BR - pt-PT - ro - ru - sk - es - es-419 - sv - sv-SE - th - th-TH - tr - uk - vi - auto_detect DeepgramNova3Config: type: object title: DeepgramNova3Config properties: transcription_engine: type: string enum: - Deepgram transcription_model: type: string enum: - deepgram/nova-3 interim_results: type: boolean default: false example: true description: Whether to send also interim results. If set to false, only final results will be sent. utterance_end_ms: type: integer default: 1000 example: 800 minimum: 0 maximum: 5000 description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms. language: $ref: '#/components/schemas/DeepgramNova3TranscriptionLanguage' smart_format: type: boolean default: true example: false description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.' keywords_boosting: type: object description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom": 2, "krieger": 1}`.' additionalProperties: type: number description: Boost intensifier for the keyword. Higher values increase recognition confidence. default: null example: snuffleupagus: 5 systrom: 2 krieger: 1 keyterms: type: array description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2. items: type: string maxItems: 100 default: [] example: - Telnyx - LiveKit - VoIP additionalProperties: false required: - transcription_engine - transcription_model example: transcription_engine: Deepgram transcription_model: deepgram/nova-3 language: en smart_format: false keyterms: - Telnyx - LiveKit - VoIP keywords_boosting: snuffleupagus: 5 systrom: 2 krieger: 1 DeepgramNova3MedicalConfig: type: object title: DeepgramNova3MedicalConfig properties: transcription_engine: type: string enum: - Deepgram transcription_model: type: string enum: - deepgram/nova-3-medical interim_results: type: boolean default: false example: true description: Whether to send also interim results. If set to false, only final results will be sent. utterance_end_ms: type: integer default: 1000 example: 800 minimum: 0 maximum: 5000 description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms. language: $ref: '#/components/schemas/DeepgramEnglishTranscriptionLanguage' smart_format: type: boolean default: true example: false description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.' keywords_boosting: type: object description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom": 2, "krieger": 1}`.' additionalProperties: type: number description: Boost intensifier for the keyword. Higher values increase recognition confidence. default: null example: snuffleupagus: 5 systrom: 2 krieger: 1 keyterms: type: array description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2. items: type: string maxItems: 100 default: [] example: - Telnyx - LiveKit - VoIP additionalProperties: false required: - transcription_engine - transcription_model example: transcription_engine: Deepgram transcription_model: deepgram/nova-3-medical language: en-US smart_format: false keyterms: - Telnyx - LiveKit - VoIP keywords_boosting: snuffleupagus: 5 systrom: 2 krieger: 1 description: Deepgram Nova-3 medical model, tuned for medical vocabulary. English only. DeepgramNova3TranscriptionLanguage: title: Deepgram nova-3 transcription engine list of languages type: string description: Language to use for speech recognition with nova-3 model example: en default: en enum: - en - en-US - en-AU - en-GB - en-IN - en-NZ - de - nl - sv - sv-SE - da - da-DK - es - es-419 - fr - fr-CA - pt - pt-BR - pt-PT - auto_detect DefaultCondition: properties: type: type: string const: default title: Type type: object required: - type title: DefaultCondition description: 'Fallback edge condition: fires only when no other edge''s condition is true. Evaluated after every conditioned (`llm` / `expression`) edge regardless of declaration order, so it routes the flow whenever none of the node''s other outgoing edges match. Valid **only** on edges leaving a `tool` or `speak` node, where the deterministic step auto-advances and must always have somewhere to go. A tool/speak node with any outgoing edge is required to carry exactly one `default` edge so it never dead-ends; a tool/speak node with no outgoing edges is a valid terminal step. Carries no parameters.' example: type: default DefaultGateway: allOf: - $ref: '#/components/schemas/Record' - type: object title: DefaultGateway properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: default_gateway network_id: type: string format: uuid description: Network ID. readOnly: true example: e66c496d-4a85-423b-8b2a-8e63fac20320 wireguard_peer_id: type: string format: uuid description: Wireguard peer ID. example: e66c496d-4a85-423b-8b2a-8e63fac20320 status: $ref: '#/components/schemas/InterfaceStatus' DelegationSettings: type: object title: DelegationSettings description: Splits the conversation between a frontend model that talks to the caller and a backend model that does the work. On the GPT-Live route the frontend model cannot call tools at all — when it needs something done it raises a delegation and waits. On the chat completion route the frontend keeps a single `delegate` tool that returns immediately, so the conversation carries on while the backend works. Either way the backend's answer is spoken as commentary or kept as silent context, depending on `speak_results`. Beta feature. properties: enabled: type: boolean default: true description: 'Whether the assistant delegates work to a backend model. Defaults to `true`: a GPT-Live assistant with delegation disabled can hold a conversation but can never look anything up or run a tool.' mode: type: string enum: - telnyx - client default: telnyx description: 'Who answers a delegation. `telnyx` runs the backend model on Telnyx with the assistant''s own tools, MCP servers and observability. `client` relays the delegation to a server you host over the WebSocket configured in `websocket_settings`: Telnyx sends a `session.delegation.created` frame and waits for your `session.delegation.completed` answer. That answer is text only, since the socket offers no tool vocabulary. If no socket is connected the delegation is refused and the assistant tells the caller it cannot look things up right now. Defaults to `telnyx`.' model: type: string description: The backend model that answers delegations. Must be a model available for AI Assistants. When enabling `telnyx` delegation, explicitly set this field or `external_llm.model`; a configuration without either backend model is rejected. Only applies when `mode` is `telnyx`. llm_api_key_ref: type: string description: Integration secret identifier for the backend model's API key. Required for models from providers other than Telnyx, OpenAI and Anthropic. A raw `api_key` is rejected rather than ignored, so that no plaintext credential is stored on the assistant. instructions: type: string description: Extra instructions for the backend model, in addition to the assistant's own. Use this for the business rules the backend needs and the talking model does not. speak_results: type: boolean default: true description: Whether the backend's answer is spoken to the caller. When `true` the result is appended as commentary and paraphrased aloud; when `false` it is kept as silent context that informs later answers without being read out. Defaults to `true`. external_llm: allOf: - $ref: '#/components/schemas/ExternalLLM' description: Run the backend on your own OpenAI-compatible endpoint instead of a Telnyx-hosted model. As above, a raw `api_key` here is rejected — reference an integration secret with `external_llm.llm_api_key_ref` instead. DeletedAssistant: allOf: - $ref: '#/components/schemas/inference-embedding_Assistant' - properties: deleted_at: type: string format: date-time title: Deleted At description: Timestamp of the soft delete. permanently_deleted_at: type: string format: date-time title: Permanently Deleted At description: Point after which the assistant is permanently deleted automatically and can no longer be restored. required: - deleted_at - permanently_deleted_at type: object description: 'A soft-deleted assistant in the Recently Deleted list: the full assistant configuration plus deletion metadata.' DetailRecord: type: object description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records oneOf: - $ref: '#/components/schemas/MessageDetailRecord' title: Message - $ref: '#/components/schemas/ConferenceDetailRecord' title: Conference - $ref: '#/components/schemas/ConferenceParticipantDetailRecord' title: Conference Participant - $ref: '#/components/schemas/AmdDetailRecord' title: AMD - $ref: '#/components/schemas/VerifyDetailRecord' title: Verify 2FA - $ref: '#/components/schemas/SimCardUsageDetailRecord' title: Sim Card Usage - $ref: '#/components/schemas/MediaStorageDetailRecord' title: Media Storage required: - record_type discriminator: propertyName: record_type DetailRecordsSearchResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/DetailRecord' meta: $ref: '#/components/schemas/detail-records_PaginationMeta' DeveloperMessage: type: object title: Developer Message description: Developer-provided instructions that the model should follow, regardless of messages sent by the user. properties: role: description: The role of the messages author, in this case developer. type: string enum: - developer content: description: The contents of the developer message. type: string metadata: $ref: '#/components/schemas/MessageMetadata' required: - role - content example: role: developer content: Get the user's favorite color DialConferenceParticipantRequest: type: object title: Create Conference Participant Request properties: Beep: description: Whether to play a notification beep to the conference when the participant enters and exits. example: onExit type: string enum: - 'true' - 'false' - onEnter - onExit StatusCallback: description: URL destination for Telnyx to send status callback events to for the call. example: https://www.example.com/callback type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback`. example: GET type: string enum: - GET - POST StatusCallbackEvent: description: 'The changes to the call''s state that should generate a call to `StatusCallback`. Can be: `initiated`, `ringing`, `answered`, and `completed`. Separate multiple values with a space. The default value is `completed`.' example: answered completed type: string To: description: The phone number of the called party. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string From: description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string Timeout: description: The number of seconds that we should allow the phone to ring before assuming there is no answer. Can be an integer between 5 and 120, inclusive. The default value is 30. example: 30 type: integer x-stainless-param: timeout_seconds Muted: description: Whether the participant should be muted. example: true type: boolean StartConferenceOnEnter: description: Whether to start the conference when the participant enters. Defaults to `true`. example: false type: boolean EndConferenceOnExit: description: Whether to end the conference when the participant leaves. Defaults to `false`. example: true type: boolean Label: description: A unique label for the participant that will be added to the conference. The label can be used to reference the participant for updates via the TeXML REST API. example: customer type: string EarlyMedia: description: Whether participant shall be bridged to conference before the participant answers (from early media if available). Defaults to `false`. example: true type: boolean default: false ConferenceStatusCallback: description: The URL the conference callbacks will be sent to. example: https://example.com/conference_status_callback type: string ConferenceStatusCallbackMethod: description: HTTP request type used for `ConferenceStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST ConferenceStatusCallbackEvent: description: 'The changes to the conference''s state that should generate a call to `ConferenceStatusCallback`. Can be: `start`, `end`, `join` and `leave`. Separate multiple values with a space. By default no callbacks are sent.' example: start end join leave type: string WaitUrl: description: The URL to call for an audio file to play while the participant is waiting for the conference to start. example: https://www.example.com/wait_music.mp3 type: string MaxParticipants: description: The maximum number of participants in the conference. Can be a positive integer from 2 to 800. The default value is 250. example: 30 type: integer Coaching: description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given. example: false type: boolean CallSidToCoach: description: The SID of the participant who is being coached. The participant being coached is the only participant who can hear the participant who is coaching. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ type: string CallerId: description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If ommited, the display name will be the same as the number in the `From` field. example: Info type: string TimeLimit: description: The maximum duration of the call in seconds. example: 30 type: integer MachineDetection: description: Whether to detect if a human or an answering machine picked up the call. Use `Enable` if you would like to ne notified as soon as the called party is identified. Use `DetectMessageEnd`, if you would like to leave a message on an answering machine. example: Enable type: string enum: - Enable - DetectMessageEnd MachineDetectionTimeout: description: How long answering machine detection should go on for before sending an `Unknown` result. Given in milliseconds. example: 1000 type: integer MachineDetectionSpeechThreshold: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used. example: 2000 default: 3500 type: integer MachineDetectionSpeechEndThreshold: description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used. example: 2000 default: 800 type: integer MachineDetectionSilenceTimeout: description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used. example: 2000 default: 3500 type: integer MachineDetectionBeepProfile: description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile. Only used when MachineDetection is enabled. example: freq_only default: both type: string enum: - both - freq_only MachineDetectionBeepMinFrequency: description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when MachineDetection is enabled. type: integer example: 550 format: int32 minimum: 200 maximum: 4000 MachineDetectionBeepMaxFrequency: description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection is enabled. type: integer example: 2000 format: int32 minimum: 200 maximum: 4000 MachineDetectionBeepMinToneDuration: description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when MachineDetection is enabled. type: integer example: 300 format: int32 minimum: 50 maximum: 5000 MachineDetectionBeepSpectralConfirmation: description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when MachineDetection is enabled. type: boolean example: true MachineDetectionBeepSpectralWindow: description: Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled. type: integer example: 100 format: int32 minimum: 20 maximum: 1000 MachineDetectionBeepSpectralMinPurity: description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled. type: number example: 0.8 minimum: 0 maximum: 1 MachineDetectionBeepSpectralRejectFaxCng: description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection is enabled. type: boolean example: true AmdStatusCallback: description: The URL the result of answering machine detection will be sent to. example: https://www.example.com/amd_result type: string AmdStatusCallbackMethod: description: HTTP request type used for `AmdStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST ApplicationSid: description: The SID of the TeXML application that will handle the new participant's call. Required unless joining an existing conference by its ConferenceSid. example: '1846572522338780702' type: string CancelPlaybackOnMachineDetection: description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`. default: true example: false type: boolean CancelPlaybackOnDetectMessageEnd: description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`. default: true example: false type: boolean PreferredCodecs: description: The list of comma-separated codecs to be offered on a call. example: PCMA,PCMU type: string Record: description: Whether to record the entire participant's call leg. Defaults to `false`. example: false type: boolean RecordingChannels: description: The number of channels in the final recording. Defaults to `mono`. example: dual type: string enum: - mono - dual RecordingStatusCallback: description: The URL the recording callbacks will be sent to. example: https://example.com/recording_status_callback type: string RecordingStatusCallbackMethod: description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST RecordingStatusCallbackEvent: description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.' example: in-progress completed absent type: string RecordingTrack: description: The audio track to record for the call. The default is `both`. example: inbound type: string enum: - inbound - outbound - both SipAuthPassword: description: The password to use for SIP authentication. example: '1234' type: string SipAuthUsername: description: The username to use for SIP authentication. example: user type: string Trim: description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim ConferenceRecord: description: Whether to record the conference the participant is joining. Defualts to `do-not-record`. The boolean values `true` and `false` are synonymous with `record-from-start` and `do-not-record` respectively. example: record-from-start type: string enum: - 'true' - 'false' - record-from-start - do-not-record ConferenceRecordingStatusCallback: description: The URL the conference recording callbacks will be sent to. example: https://example.com/conference_recording_status_callback type: string ConferenceRecordingStatusCallbackMethod: description: HTTP request type used for `ConferenceRecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST ConferenceRecordingStatusCallbackEvent: description: 'The changes to the conference recording''s state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`. `failed` and `absent` are synonymous.' example: in-progress completed failed absent type: string ConferenceRecordingTimeout: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. Please note that the transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite) example: 5 type: integer default: 0 ConferenceTrim: description: Whether to trim any leading and trailing silence from the conference recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim CustomHeaders: description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties. type: array items: type: object properties: name: type: string description: The name of the custom header value: type: string description: The value of the custom header required: - name - value example: - name: X-Custom-Header value: custom-value example: To: '+12065550100' From: '+12065550200' DialMetric: type: object title: Dial Metrics Bucket description: Dial counts and rates for one region in one time bucket. One record per region per bucket. properties: record_type: type: string enum: - dial_metric example: dial_metric region: type: string description: Region where the dials were handled. Current values are `us`, `eu`, `australia`, `middle_east`, `canada` and `india`. New values can be added, so clients must tolerate values not listed here. Buckets of different regions are separate records. example: us start_time: type: string format: date-time description: Start of the bucket (inclusive), UTC. example: '2026-09-29T12:00:00.000Z' end_time: type: string format: date-time description: End of the bucket (exclusive), UTC. Five seconds, one minute or one hour after `start_time`, depending on `granularity`. example: '2026-09-29T13:00:00.000Z' dials: type: object description: Dial attempt counts in the bucket. properties: total: type: integer minimum: 0 description: 'All dial attempts, rejected ones included: accepted plus every rejected count.' example: 85600 accepted: type: integer minimum: 0 description: Dial attempts that were not rejected by a limit. example: 85240 rejected: type: object description: Dial attempts rejected by a limit. properties: dps_limit: type: integer minimum: 0 description: Rejected by the dials-per-second limit. example: 360 hourly_limit: type: integer minimum: 0 description: Rejected by an hourly limit. example: 0 daily_limit: type: integer minimum: 0 description: Rejected by a daily limit. example: 0 average_dps: type: number description: '`dials.total` divided by the bucket duration in seconds, rounded to 4 decimal places. Counts every dial attempt, rejected ones included.' example: 23.7778 peak_dps: type: number description: Dials per second, rounded to 4 decimal places, in the busiest 5-second window of the bucket, summed across all call-processing nodes of the region. Counts every dial attempt, rejected ones included, so `peak_dps` above `dps_limit` is expected when dials were rejected. For `granularity=second` it equals `average_dps`. example: 104.0 dps_limit: type: - integer - 'null' description: DPS limit in force during the busiest 5-second window, so it compares directly with `peak_dps`. `null` means unlimited. Enforcement near the limit is approximate; `dials.rejected.dps_limit` is the authoritative signal that the limit was reached. example: 100 DialMetricsListMeta: type: object title: Dial Metrics List Meta properties: granularity: type: string enum: - second - minute - hour description: Echo of the requested granularity. example: hour start_time: type: string format: date-time description: Echo of the requested `start_time`. example: '2026-09-29T12:00:00.000Z' end_time: type: string format: date-time description: Echo of the requested `end_time`. example: '2026-09-29T14:00:00.000Z' cursors: type: object description: Empty on the last page. When `page[after]` matched no records, the page is empty and `after` and `before` both echo the given cursor. properties: after: type: string description: Opaque cursor for the next page. Pass it as `page[after]`. example: MTc5MDY4NjgwMDpldQ before: type: string description: 'Present only on an empty page for a cursor that matched nothing: echoes that cursor.' example: MTc5MDY4MzIwMDp1cw next: type: string description: Path to the next page, repeating this request's parameters. Absent on the last page. example: /v2/dial_metrics?end_time=2026-09-29T14%3A00%3A00.000Z&granularity=hour&page%5Bafter%5D=MTc5MDY4NjgwMDpldQ&page%5Blimit%5D=2&sort=-start_time&start_time=2026-09-29T12%3A00%3A00.000Z sort: type: string enum: - -start_time - start_time description: Echo of the applied sort order. example: -start_time DialogflowConfig: type: object title: Dialogflow Config properties: analyze_sentiment: description: Enable sentiment analysis from Dialogflow. type: boolean example: true default: false partial_automated_agent_reply: description: Enable partial automated agent reply from Dialogflow. type: boolean example: true default: false DialogflowConnection: type: object title: Dialogflow Connection Params required: - service_account properties: service_account: description: The JSON map to connect your Dialoglow account. type: object additionalProperties: true dialogflow_api: description: Determine which Dialogflow will be used. type: string enum: - cx - es example: cx default: es conversation_profile_id: description: The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow CX, this param is required) type: string example: a-VMHLWzTmKjiJw5S6O0-w location: description: The region of your agent is. (If you use Dialogflow CX, this param is required) type: string example: global environment: description: Which Dialogflow environment will be used. type: string example: development example: service_account: type: service_account project_id: your-project-id private_key_id: your-private-key private_key: '-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----' client_email: example@example.com client_id: your-client-id auth_uri: https://accounts.google.com/o/oauth2/auth token_uri: https://oauth2.googleapis.com/token auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/example%40example.iam.gserviceaccount.com dialogflow_api: cx conversation_profile_id: a-VMHLWzTmKjiJw5S6O0-w location: global environment: development DialogflowConnectionResponse: type: object title: Dialogflow Connection Response required: - data properties: data: type: object title: Dialogflow Connection properties: record_type: type: string example: dialogflow_connections connection_id: type: string example: '1234541231' description: Uniquely identifies a Telnyx application (Call Control). conversation_profile_id: type: string description: The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow CX, this param is required) example: a-VMHLWzTmKjiJw5S6O0-w environment: type: string description: Which Dialogflow environment will be used. example: development service_account: type: string description: The JSON map to connect your Dialoglow account. example: '****' Dir: type: object properties: id: type: string format: uuid example: 16635d38-75a6-4481-82e8-69af60e05011 readOnly: true enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 display_name: type: string example: Acme Plumbing reselling: type: boolean example: false certify_brand_is_accurate: type: boolean example: true certify_no_shaft_content: type: boolean example: true certify_ip_ownership: type: boolean example: true authorizer_name: type: string nullable: true example: Sam Owner authorizer_email: type: string format: email nullable: true example: sam@acmeplumbing.example.com logo_url: type: string format: uri nullable: true example: https://acmeplumbing.example.com/logo-256.bmp call_reasons: type: array items: $ref: '#/components/schemas/CallReason' documents: type: array items: $ref: '#/components/schemas/Document' nullable: true status: $ref: '#/components/schemas/DirStatus' rejection_reasons: type: array items: $ref: '#/components/schemas/RejectionReason' nullable: true description: Populated when `status` is `rejected`; cleared on `/submit` or successful approval. rejected_at: type: string format: date-time nullable: true readOnly: true created_at: type: string format: date-time example: '2026-04-26T18:06:51.940749Z' readOnly: true updated_at: type: string format: date-time example: '2026-04-26T18:09:24.785211Z' readOnly: true submitted_at: type: string format: date-time nullable: true example: '2026-04-26T18:07:03.716411Z' readOnly: true verified_at: type: string format: date-time nullable: true example: '2026-04-26T18:07:29.537926Z' readOnly: true expiring_at: type: string format: date-time nullable: true example: '2027-04-26T18:07:29.537981Z' readOnly: true delete_requested_at: type: string format: date-time nullable: true description: When deletion was requested. Set once the DIR enters `delete_requested`; `null` otherwise. example: '2026-04-27T09:12:44.201820Z' readOnly: true webhook_url: type: string format: uri nullable: true description: '`https://` URL that receives webhook notifications for this DIR''s compliance-review outcomes. `null` when not subscribed.' example: https://acmehealthcare.example.com/webhooks/branded-calling DirComment: type: object properties: id: type: string format: uuid example: 30bbd13c-1f3a-47c0-8fa6-718835917b2f readOnly: true entity_type: type: string enum: - dir description: Resource the comment is attached to. Always `dir` on this endpoint. example: dir readOnly: true content: type: string example: Please re-upload a clearer scan of the certificate. visibility: type: string enum: - customer description: Always `customer` on this endpoint - internal-only comments are filtered out. example: customer readOnly: true author_role: type: string enum: - customer - admin description: Who wrote the comment. `admin` covers the Telnyx vetting team. example: customer readOnly: true author_name: type: string nullable: true description: Display name of the author. May be `null`. example: null readOnly: true comment_type: $ref: '#/components/schemas/CommentType' created_at: type: string format: date-time example: '2026-04-27T00:42:44.305835Z' readOnly: true DirCommentCreateRequest: type: object required: - content description: Customer-facing comment body. The server forces `comment_type=customer_inquiry`, `visibility=customer`, and `author_role=customer`; clients cannot override these. `author_name` is dropped to prevent admin-impersonation. properties: content: type: string minLength: 1 maxLength: 5000 description: Comment body. 1–5000 characters. example: Re-uploaded the logo as a 256×256 BMP. Please re-review. parent_comment_id: type: string format: uuid description: Optional parent comment id to thread this reply under. DirCreateRequest: type: object required: - display_name - certify_brand_is_accurate - certify_no_shaft_content - certify_ip_ownership - authorizer_name - authorizer_email - call_reasons properties: display_name: type: string minLength: 1 maxLength: 35 description: Name shown to call recipients. No emoji; not whitespace-only. example: Acme Plumbing reselling: type: boolean description: Set to true if your organization places calls on behalf of other enterprises (BPO/reseller). default: false example: false certify_brand_is_accurate: type: boolean description: Certification that the DIR information is accurate. Must be `true` for the DIR to be submitted for vetting. example: true enum: - true certify_no_shaft_content: type: boolean description: Must be `true`. Confirms this DIR is not used for SHAFT content (Sex, Hate, Alcohol, Firearms, Tobacco) where prohibited. example: true enum: - true certify_ip_ownership: type: boolean description: Must be `true`. Confirms ownership of any logos/trademarks shown. example: true enum: - true authorizer_name: type: string maxLength: 255 example: Sam Owner description: Name of the person at your enterprise who is authorizing this DIR registration. Must be a real individual (used for audit and trademark-claim contests). authorizer_email: type: string format: email example: sam@acmeplumbing.example.com description: Contact email of the authorizer. Telnyx may send verification or infringement-notice email here; use a monitored mailbox. logo_url: type: string format: uri maxLength: 128 description: Publicly accessible HTTPS URL (max 128 chars) to a 256x256 BMP logo (max 1 MB). example: https://acmeplumbing.example.com/logo-256.bmp call_reasons: type: array items: type: string maxLength: 64 minItems: 1 maxItems: 10 description: 1–10 reasons your business calls customers. Validate phrasing against `POST /call_reasons/validate`. example: - Appointment reminders - Billing inquiries documents: type: array items: $ref: '#/components/schemas/Document' maxItems: 20 description: Supporting documents. Each `document_id` may appear at most once on a DIR. webhook_url: type: string format: uri nullable: true maxLength: 2048 description: Optional `https://` URL that receives webhook notifications when this DIR's compliance review completes (rejection outcomes include structured rejection reasons). Maximum 2048 characters. example: https://mapleridge.example.com/webhooks/branded-calling bpo_authorizations: type: array items: $ref: '#/components/schemas/BpoAuthorizationInput' maxItems: 10 description: Optional. Approved BPO (Business Process Outsourcer) accounts on your organization authorized to place branded calls for this DIR, each with the signed Letter of Authorization the Brand Owner granted it. Each authorization starts `pending` and takes effect only after an admin reviews its Letter of Authorization. Omit or send an empty list to authorize no BPO on this DIR. Maximum 10. DirDeleteRequestAccepted: type: object required: - data properties: data: type: object required: - id - status properties: id: type: string format: uuid description: Id of the DIR whose deletion was requested. example: 16635d38-75a6-4481-82e8-69af60e05011 status: type: string enum: - delete_requested description: 'Always `delete_requested`: the DIR has been queued for removal, not yet removed.' example: delete_requested DirInfringementUpdateRequest: type: object required: - certify_no_infringement - certify_brand_is_accurate - certify_no_shaft_content - certify_ip_ownership - infringement_resolution_notes properties: certify_no_infringement: type: boolean description: Check to certify that the brand no longer infringes anyone else's trademark or intellectual property. enum: - true certify_brand_is_accurate: type: boolean description: Must be `true`. enum: - true certify_no_shaft_content: type: boolean description: Must be `true`. enum: - true certify_ip_ownership: type: boolean description: Must be `true`. enum: - true infringement_resolution_notes: type: string minLength: 10 maxLength: 500 description: Explanation of how the infringement concern was addressed. display_name: type: string nullable: true minLength: 1 maxLength: 35 description: The business name shown to call recipients, 1 to 35 characters, no emoji, not blank. logo_url: type: string nullable: true maxLength: 128 description: Publicly accessible HTTPS URL (max 128 chars) to a 256x256 BMP logo (max 1 MB). call_reasons: type: array items: type: string nullable: true minItems: 1 maxItems: 10 documents: type: array items: $ref: '#/components/schemas/Document' nullable: true maxItems: 20 description: Append-only supporting documents to attach while resolving the claim (e.g. authorization or licensing proof). DirList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Dir' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' DirPhoneNumber: type: object properties: id: type: string format: uuid example: 1f56eb76-4078-4af7-ad4d-564b027256ee readOnly: true dir_id: type: string format: uuid example: 16635d38-75a6-4481-82e8-69af60e05011 enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 phone_number: type: string description: E.164 with leading `+`. example: '+19493253498' batch_id: type: string format: uuid nullable: true description: Id of the batch this number was vetted as part of. example: 0a4b1f5e-2f12-4c0c-9a98-9b3a7d8b8e62 loa_document_id: type: string format: uuid nullable: true description: Id of the Letter of Authorization document attached to this number's batch. example: null status: $ref: '#/components/schemas/PhoneNumberStatus' rejection_reason: $ref: '#/components/schemas/RejectionReason' nullable: true description: Populated when `status` is `unsuccessful` or `permanently_rejected`. created_at: type: string format: date-time example: '2026-04-26T18:11:42.850928Z' readOnly: true updated_at: type: string format: date-time example: '2026-04-26T18:12:11.123456Z' readOnly: true verified_at: type: string format: date-time nullable: true example: '2026-04-26T18:12:11.123456Z' readOnly: true DirStatus: type: string enum: - draft - submitted - in_review - verified - rejected - unsuccessful - suspended - expired - infringement_claimed - permanently_rejected - delete_requested description: 'DIR lifecycle status. - `draft` - newly created; editable; not yet submitted. - `submitted` / `in_review` - Telnyx is reviewing. - `verified` - approved; phone numbers may be attached. - `rejected` - Telnyx rejected this submission; `rejection_reasons` is populated; customer can edit and resubmit. - `unsuccessful` - system-side error during processing; customer can edit and resubmit. - `suspended` - temporarily disabled (e.g. by an active infringement claim). - `expired` - verification expired; customer must resubmit. - `infringement_claimed` - a trademark/impersonation claim is open against this DIR. - `permanently_rejected` - terminal; cannot be resubmitted. - `delete_requested` - you have requested deletion; the DIR still exists and Telnyx is completing the removal (de-registration and cleanup). A verified DIR keeps serving its branded identity, and keeps billing, until the removal finishes.' DirUpdateRequest: type: object description: All fields are optional; only those supplied are updated. Same per-field rules as `DirCreateRequest`. properties: display_name: type: string minLength: 1 maxLength: 35 description: Name shown to call recipients. 1–35 characters, no emoji, not whitespace-only. reselling: type: boolean description: Set to true if your organization places calls on behalf of other enterprises (BPO/reseller). Updating this triggers re-vetting on next submit. authorizer_name: type: string maxLength: 255 description: Name of the person at your enterprise authorizing this DIR. Must be a real individual. authorizer_email: type: string format: email description: Contact email of the authorizer. Telnyx may send verification or infringement notices here. logo_url: type: string format: uri maxLength: 128 description: Publicly accessible HTTPS URL (max 128 chars) to a 256x256 BMP logo (max 1 MB). call_reasons: type: array items: type: string maxLength: 64 minItems: 1 maxItems: 10 description: 1–10 reasons your business calls customers. Validate phrasing against `POST /call_reasons/validate`. certify_brand_is_accurate: type: boolean description: Certification that the DIR information is accurate. Must be `true` for the DIR to be submitted for vetting. example: true certify_no_shaft_content: type: boolean description: Certification that this DIR is not used for SHAFT content (Sex, Hate, Alcohol, Firearms, Tobacco) where prohibited. Must be `true` for the DIR to be submitted for vetting. example: true certify_ip_ownership: type: boolean description: Certification of ownership of any logos/trademarks shown. Must be `true` for the DIR to be submitted for vetting. example: true documents: type: array items: $ref: '#/components/schemas/Document' maxItems: 20 description: 'Additional supporting documents to attach. Append-only: existing documents are never removed or replaced, and an empty or omitted list is a no-op. Each `document_id` may appear at most once on a DIR.' webhook_url: type: string format: uri nullable: true maxLength: 2048 description: Optional `https://` URL that receives webhook notifications when this DIR's compliance review completes. Send `null` to clear. Changing only this field on a `verified` DIR does not re-vet it. Maximum 2048 characters. example: https://mapleridge.example.com/webhooks/branded-calling bpo_authorizations: type: array items: $ref: '#/components/schemas/BpoAuthorizationInput' maxItems: 10 description: 'Optional. Replace this DIR''s authorized BPO (Business Process Outsourcer) accounts with these, each with its signed Letter of Authorization. The supplied list replaces the current one: a BPO left out has its authorization removed, and a new BPO (or a changed Letter of Authorization) is created `pending` admin review. Send an empty list to clear all authorizations; omit the field to leave them unchanged. Editing this list does not re-vet the DIR. Maximum 10.' DirWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/Dir' Direction: description: The direction of the fax. type: string example: outbound enum: - inbound - outbound DocReqsRequirement: type: object properties: record_type: description: Identifies the type of the resource. type: string readOnly: true example: requirement country_code: description: The 2-character (ISO 3166-1 alpha-2) country code where this requirement applies type: string readOnly: false example: FR locality: description: The locality where this requirement applies type: string readOnly: false example: Nice phone_number_type: description: Indicates the phone_number_type this requirement applies to. Leave blank if this requirement applies to all number_types. type: string enum: - local - mobile - multipurpose - national - shared_cost - toll_free example: local readOnly: false action: description: Indicates whether this requirement applies to branded_calling, ordering, porting, or both ordering and porting type: string enum: - both - branded_calling - ordering - porting example: ordering readOnly: false requirement_types: description: Lists the requirement types necessary to fulfill this requirement type: array items: $ref: '#/components/schemas/DocReqsRequirementType' readOnly: true id: description: Identifies the associated document type: string format: uuid readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2021-04-09T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was last updated. readOnly: true example: '2021-04-12T20:20:20.020Z' version: type: integer readOnly: true description: Version number. Increments with each new version. Defaults to 1. effective_start_at: type: - string - 'null' format: date-time readOnly: true description: When this version became (or will become) active. effective_end_at: type: - string - 'null' format: date-time readOnly: true description: When this version was superseded. NULL means this is the active or pending version. DocReqsRequirementList: type: array items: $ref: '#/components/schemas/DocReqsRequirement' DocReqsRequirementType: type: object properties: acceptance_criteria: description: Specifies objective criteria for acceptance type: object properties: time_limit: description: Specifies time-based acceptance criteria example: Current and not expired type: string readOnly: false locality_limit: description: Specifies geography-based acceptance criteria example: Issued by the same country that the phone number belongs to type: string readOnly: false acceptable_values: description: Specifies the list of strictly possible values for the requirement. Ignored when empty type: array items: type: string example: US readOnly: false max_length: description: Maximum length allowed for the value type: integer example: 20 readOnly: false min_length: description: Minimum length allowed for the value type: integer example: 16 readOnly: false acceptable_characters: description: Specifies the allowed characters as a string type: string example: abcdef0123456789 readOnly: false description: description: Describes the requirement type example: Proves the customer has a physical address in the same locality as the phone number type: string readOnly: false example: description: Provides one or more examples of acceptable documents example: Utility bill, internet bill, phone bill, or lease type: string readOnly: false type: description: Defines the type of this requirement type example: document type: string enum: - document - address - textual readOnly: false name: description: A short descriptive name for this requirement_type example: Proof of Address type: string readOnly: true record_type: description: Identifies the type of the resource example: requirement_type type: string readOnly: true id: description: Identifies the associated document type: string format: uuid readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2021-04-09T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was last updated. readOnly: true example: '2021-04-12T20:20:20.020Z' DocReqsRequirementTypeList: type: array items: $ref: '#/components/schemas/DocReqsRequirementType' DocServiceDocument: allOf: - $ref: '#/components/schemas/DocServiceRecord' - type: object properties: record_type: description: Identifies the type of the resource. type: string readOnly: true example: document content_type: description: The document's content_type. type: string readOnly: true example: application/pdf size: description: Indicates the document's filesize type: object readOnly: true properties: unit: description: Identifies the unit type: string readOnly: true example: bytes amount: description: The number of bytes type: integer readOnly: true example: 123456 status: type: string description: Indicates the current document reviewing status readOnly: true enum: - pending - verified - denied example: pending sha256: description: The document's SHA256 hash provided for optional verification purposes. type: string readOnly: true example: 08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c filename: description: The filename of the document. type: string example: test-document.pdf customer_reference: type: string description: Optional reference string for customer tracking. example: MY REF 001 av_scan_status: type: string description: The antivirus scan status of the document. readOnly: true enum: - scanned - infected - pending_scan - not_scanned example: scanned DocServiceDocumentLink: allOf: - $ref: '#/components/schemas/DocServiceRecord' - type: object properties: record_type: description: Identifies the type of the resource. type: string readOnly: true example: document_link document_id: description: Identifies the associated document. type: string format: uuid readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 linked_record_type: description: The linked resource's record type. type: string readOnly: true example: porting_order linked_resource_id: description: Identifies the linked resource. type: string readOnly: true example: 132091b4-442b-4a2a-b87f-61e707e46d54 DocServiceRecord: type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string description: Identifies the type of the resource. readOnly: true example: sample_record_type created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' Document: type: object required: - document_id - document_type properties: document_id: type: string format: uuid description: Id returned by the Telnyx Documents API after you upload the file (upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents). example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c document_type: type: string enum: - letter_of_authorization - business_registration - articles_of_incorporation - certificate_of_good_standing - tax_document - ein_letter - trademark_registration - website_ownership - business_license - professional_license - government_id - utility_bill - bank_statement - business_credit_report - bank_reference_letter - other example: business_registration description: Type of supporting document. Pick the closest match to what the file actually contains; `other` triggers manual vetting and may slow approval. The matching short_name reference list is at `GET /v2/dir/document_types`. description: type: string maxLength: 255 description: An optional note describing this document, for example what it proves. example: Certificate of incorporation. DocumentTypeReference: type: object description: Single supported document type. properties: short_name: type: string description: Stable identifier passed to `Document.document_type`. example: letter_of_authorization description: type: string example: Signed authorization from the DIR owner permitting Telnyx to register the DIR and its associated numbers on their behalf DocumentTypeReferenceList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/DocumentTypeReference' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' DomainGraduationLimitExceededError: type: object description: Error envelope returned when a newly sending custom domain on shared egress would exceed its current daily graduation ceiling. The send is rejected before message creation. required: - errors properties: errors: type: array minItems: 1 maxItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - domain_graduation_limit_exceeded title: type: string example: Too Many Requests detail: type: string example: Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight UTC. meta: type: object description: Bounded retry guidance. Each field is omitted when unknown. additionalProperties: false properties: retry_after_seconds: type: integer minimum: 1 description: Seconds until the next UTC-midnight reset. remaining_today: type: integer minimum: 0 description: Recipient headroom remaining for the sender-domain identity before this rejected request. DomainsErrorResponse: type: object required: - errors properties: errors: type: array items: $ref: '#/components/schemas/email_Error' DomainsTrackingSettings: type: object properties: open_tracking: type: boolean default: false description: Inject a tracking pixel into HTML messages to record open events. click_tracking: type: boolean default: false description: Rewrite HTML links through a tracking redirect to record click events. unsubscribe_tracking: type: boolean default: true description: Add RFC 8058 List-Unsubscribe headers with a signed one-click unsubscribe URL. Enabled by default; Gmail/Yahoo bulk-sender rules require one-click unsubscribe support. DownlinkData: type: object properties: amount: type: number description: Downlink data example: 1 unit: description: Transmission unit type: string enum: - B - KB - MB default: MB DtmfType: title: DTMF Type type: string description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats. enum: - RFC 2833 - Inband - SIP INFO default: RFC 2833 example: Inband DynamicEmergencyAddress: type: object properties: id: type: string example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f1 readOnly: true record_type: type: string description: Identifies the type of the resource. readOnly: true example: dynamic_emergency_address sip_geolocation_id: type: string description: Unique location reference string to be used in SIP INVITE from / p-asserted headers. example: XYZ123 readOnly: true status: type: string description: Status of dynamic emergency address readOnly: true enum: - pending - activated - rejected example: pending house_number: type: string example: '600' house_suffix: type: string street_pre_directional: type: string street_name: type: string example: Congress street_suffix: type: string example: St street_post_directional: type: string extended_address: type: string locality: type: string example: Austin administrative_area: type: string example: TX postal_code: type: string example: '78701' country_code: type: string example: US enum: - US - CA - PR created_at: type: string description: ISO 8601 formatted date of when the resource was created readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date of when the resource was last updated readOnly: true example: '2018-02-02T22:25:27.521Z' required: - house_number - street_name - locality - administrative_area - postal_code - country_code DynamicEmergencyEndpoint: type: object properties: id: type: string example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 readOnly: true record_type: type: string description: Identifies the type of the resource. readOnly: true example: dynamic_emergency_endpoint dynamic_emergency_address_id: type: string description: An id of a currently active dynamic emergency location. example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 status: type: string description: Status of dynamic emergency address readOnly: true enum: - pending - activated - rejected example: pending sip_from_id: type: string example: FXDFWEDF readOnly: true callback_number: type: string example: '+13125550000' caller_name: type: string example: Jane Doe Desk Phone created_at: type: string description: ISO 8601 formatted date of when the resource was created readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date of when the resource was last updated readOnly: true example: '2018-02-02T22:25:27.521Z' required: - dynamic_emergency_address_id - callback_number - caller_name DynamicVariableExpression: description: 'Reference a dynamic variable by name. Resolved at runtime from the assistant''s dynamic-variables context (see `Assistant.dynamic_variables` and the dynamic-variables webhook).' example: name: user_age type: variable properties: name: description: Variable name to look up in the runtime context. example: user_age title: Name type: string type: const: variable title: Type type: string required: - type - name title: DynamicVariableExpression type: object ESimPurchase: title: SIMCardRegistration type: object properties: sim_card_group_id: type: string format: uuid description: The group SIMCardGroup identification. This attribute can be null when it's present in an associated resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 tags: type: array description: Searchable tags associated with the SIM cards items: type: string example: - personal - customers - active-customers product: type: string description: Type of product to be purchased, specify "whitelabel" to use a custom SPN example: whitelabel whitelabel_name: type: string description: Service Provider Name (SPN) for the Whitelabel eSIM product. It will be displayed as the mobile service name by operating systems of smartphones. This parameter must only contain letters, numbers and whitespaces. example: Custom SPN amount: type: integer description: The amount of eSIMs to be purchased. example: 10 minimum: 1 status: type: string description: Status on which the SIM cards will be set after being successfully registered. enum: - enabled - disabled - standby example: standby default: enabled required: - amount EinBrandIdentifier: type: object additionalProperties: false properties: identifier_type: const: EIN value: type: string minLength: 1 maxLength: 255 pattern: ^(?:[0-9]{9}|[0-9]{2}-[0-9]{7})$ description: Nine digits, optionally formatted as NN-NNNNNNN. required: - identifier_type - value ElevenLabsProviderParams: type: object description: ElevenLabs provider-specific parameters. properties: language_code: type: string description: Language code. api_key: type: string description: Custom ElevenLabs API key. If not provided, the default Telnyx key is used. voice_settings: type: object description: ElevenLabs voice settings (stability, similarity_boost, etc.). additionalProperties: true ElevenLabsVoiceSettings: type: object title: ElevenLabs Voice Settings properties: type: type: string enum: - elevenlabs description: Voice settings provider type api_key_ref: description: 'The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.' type: string example: my_elevenlabs_api_key required: - type EligibilityNumberResponse: type: object properties: detail: type: string description: Detailed information about the eligibility status. phone_number: type: string description: The phone number in e164 format. eligible: type: boolean description: Whether the phone number is eligible for hosted messaging. eligible_status: type: string description: The eligibility status of the phone number. enum: - NUMBER_CAN_NOT_BE_REPEATED - NUMBER_CAN_NOT_BE_VALIDATED - NUMBER_CAN_NOT_BE_WIRELESS - NUMBER_CAN_NOT_BE_ACTIVE_IN_YOUR_ACCOUNT - NUMBER_CAN_NOT_HOSTED_WITH_A_TELNYX_SUBSCRIBER - NUMBER_CAN_NOT_BE_IN_TELNYX - NUMBER_IS_NOT_A_US_NUMBER - NUMBER_IS_NOT_A_VALID_ROUTING_NUMBER - NUMBER_IS_NOT_IN_E164_FORMAT - BILLING_ACCOUNT_CHECK_FAILED - BILLING_ACCOUNT_IS_ABOLISHED - ELIGIBLE EligibilityNumbersRequest: type: object properties: phone_numbers: type: array items: type: string x-format: +E.164 description: Phone number to check eligibility description: List of phone numbers to check eligibility required: - phone_numbers EligibilityNumbersResponse: type: object properties: phone_numbers: type: array items: $ref: '#/components/schemas/EligibilityNumberResponse' description: List of phone numbers with their eligibility status. EmailAddress: type: object properties: email: type: string name: type: string required: - email EmailAddressArrayInput: type: array minItems: 1 items: $ref: '#/components/schemas/EmailAddressInput' EmailAddressInput: oneOf: - type: string - $ref: '#/components/schemas/EmailAddress' EmailBatchItemError: type: object properties: index: type: integer minimum: 0 description: Zero-based index of the failed message in the request array. code: type: string enum: - bad_request - not_found - forbidden - service_unavailable - unprocessable_entity - validation_error - recipient_suppressed - reputation_suspended description: Batch item errors use `message` (not `detail`) for the human-readable text. message: type: string required: - index - code - message EmailBatchMeta: type: object properties: total: type: integer minimum: 0 succeeded: type: integer minimum: 0 failed: type: integer minimum: 0 required: - total - succeeded - failed EmailBatchResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EmailMessage' errors: type: array items: $ref: '#/components/schemas/EmailBatchItemError' meta: $ref: '#/components/schemas/EmailBatchMeta' required: - data - errors - meta EmailBlock: type: object required: - id - record_type - to - reason - source - scope - status - created_at - updated_at properties: id: type: string format: uuid record_type: type: string enum: - email_block description: View-only discriminator. domain_id: type: string format: uuid nullable: true description: '`null` ⇒ account scope. Stored on the row; exposed here.' group_id: type: string format: uuid nullable: true description: '`null` ⇒ global; set ⇒ group-scoped opt-out.' from: type: string nullable: true description: '`null` ⇒ not address-scope. (schema: from_address)' to: type: string description: 'Normalized recipient. (schema: to_address)' reason: $ref: '#/components/schemas/Reason' source: $ref: '#/components/schemas/email_Source' scope: $ref: '#/components/schemas/Scope' status: $ref: '#/components/schemas/Status' created_at: type: string format: date-time updated_at: type: string format: date-time expires_at: type: string format: date-time nullable: true description: 'Optional expiration time. An active row stops matching send-time suppression checks as soon as `expires_at <= now()`. A maintenance worker later transitions the row to `status: expired` and appends an `expired` audit event (normally within 15 minutes). ' description: 'Suppression record. Schema fields hidden by the view: `account_id`, `bounce_category`, `dsn_code`, `meta`. ' EmailBlockEvent: type: object required: - id - record_type - event_type - reason - source - actor - occurred_at properties: id: type: string format: uuid record_type: type: string enum: - email_block_event description: View-only. event_type: type: string enum: - created - removed - expired - override_used reason: type: string description: Free-text snapshot of the block's reason at event time. source: type: string description: Free-text snapshot of the block's source at event time. actor: type: string description: Free-text (`user_id`/`org_id`/`api_key`/`dev_bypass`/`system`/`manual`). meta: type: object nullable: true additionalProperties: true description: '`null` when the schema field is nil (the context usually sets it to `{}`).' occurred_at: type: string format: date-time EmailBlockEventListResponse: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/EmailBlockEvent' meta: $ref: '#/components/schemas/OffsetMeta' EmailBlockImport: type: object required: - id - record_type - status - total - created_at - updated_at properties: id: type: string format: uuid record_type: type: string enum: - email_block_import description: View-only. status: type: string enum: - pending - processing - completed - failed total: type: integer description: Data-row count at upload. provider: type: string enum: - sendgrid - mailgun - ses - generic description: Omitted when nil. created_at: type: string format: date-time updated_at: type: string format: date-time completed_at: type: string format: date-time description: Omitted until terminal success. processed_rows: type: integer description: Only when `status == completed`. created_count: type: integer description: Only when `status == completed`. existing_count: type: integer description: Only when `status == completed`. skipped_count: type: integer description: Only when `status == completed`. error_count: type: integer description: 'Rows that passed CSV parsing but failed suppression creation. This is the creation-failure subset of `skipped_count`; parser-rejected rows equal `skipped_count - error_count`. Only when `status == completed`. ' errors: type: object additionalProperties: type: string description: '`{row_number: reason}`; only rendered when non-empty.' failure_reason: type: string description: Only on terminal failure. description: 'Import job. Schema fields hidden: `account_id`, `csv_content`, `block_ttl_days`. Nullable fields use the omit-nullable pattern. ' EmailBlockImportResponse: type: object required: - data properties: data: $ref: '#/components/schemas/EmailBlockImport' EmailBlockListCursorResponse: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/EmailBlock' meta: $ref: '#/components/schemas/CursorMeta' EmailBlockListOffsetResponse: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/EmailBlock' meta: $ref: '#/components/schemas/OffsetMeta' EmailBlockResponse: type: object required: - data properties: data: $ref: '#/components/schemas/EmailBlock' EmailDMARCPolicy: type: object description: DMARC policy for a sending domain. Drives the recommended _dmarc. TXT record. DMARC is advisory and never blocks sending. When omitted or null, the domain uses the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com). properties: p: type: string enum: - none - quarantine - reject default: none description: Policy applied to messages that fail alignment. pct: type: integer minimum: 0 maximum: 100 default: 100 description: Percentage of messages the policy applies to. Omitted from the record when 100. rua: type: string nullable: true description: URI for aggregate reports. Defaults to the Telnyx address when absent; null omits it. sp: type: string enum: - none - quarantine - reject nullable: true description: Policy for subdomains. Omitted from the record when null. EmailDomain: type: object required: - id - record_type - domain - type - status - usable_for_sending - usable_for_inbound - verification - dns_records - dkim - inbound - dmarc_policy - tracking - created_at - updated_at properties: id: type: string format: uuid record_type: type: string enum: - email_domain domain: type: string example: example.com type: $ref: '#/components/schemas/EmailDomainType' description: 'Domain type. `custom` domains are account-owned (BYOD). `shared` domains are Telnyx-managed, visible to and usable by ALL accounts for sending, but read-only: only the owning (system) account may modify, verify, or delete them; other accounts receive 403 (code 10008).' status: $ref: '#/components/schemas/EmailDomainStatus' usable_for_sending: type: boolean usable_for_inbound: type: boolean verification: $ref: '#/components/schemas/EmailDomainVerification' dns_records: type: array items: $ref: '#/components/schemas/DNSRecord' dkim: $ref: '#/components/schemas/DKIMStatus' inbound: $ref: '#/components/schemas/InboundConfig' dmarc_policy: type: object allOf: - $ref: '#/components/schemas/EmailDMARCPolicy' nullable: true description: 'Customer DMARC policy. null means use the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com). ' tracking: $ref: '#/components/schemas/DomainsTrackingSettings' created_at: type: string format: date-time updated_at: type: string format: date-time verified_at: type: string format: date-time nullable: true reputation: type: object description: Sender reputation for this domain (present on all domain responses). properties: band: type: string description: Reputation band, e.g. good/warn/poor. breakdown: type: object additionalProperties: true computed_at: type: string format: date-time nullable: true example: id: 123e4567-e89b-12d3-a456-426614174000 record_type: email_domain domain: example.com type: custom status: pending usable_for_sending: false usable_for_inbound: false verification: ownership: pending spf: missing_optional dkim: pending dmarc: missing_optional mx: not_required dns_records: [] dkim: selector: null algorithm: null key_length: null active: false rotated_at: null inbound: enabled: false catch_all: false mx_required: false dmarc_policy: p: none pct: 100 rua: mailto:dmarc@telnyx.com tracking: open_tracking: false click_tracking: false unsubscribe_tracking: false created_at: '2026-01-01T00:00:00Z' updated_at: '2026-01-01T00:00:00Z' verified_at: null EmailDomainDKIMRotation: type: object description: 'Result of rotating a domain''s DKIM key. The new key is active and signing switches to it immediately; the previous key is retired to a `retiring` state (retained, not revoked) so it can be revoked after the DNS propagation grace period. Selectors are fixed, so the DKIM DNS record''s TXT value is replaced in place at the shared `._domainkey.` host — `old_selector_retained` is false and the returned dns_records carry the new value the customer must publish promptly. ' required: - record_type - domain_id - domain - dkim - previous_dkim_key - old_selector_retained - dns_records properties: record_type: type: string enum: - email_domain_dkim_rotation domain_id: type: string format: uuid domain: type: string dkim: type: object description: The new active DKIM key. required: - id - selector - algorithm - key_length - version - status properties: id: type: string format: uuid selector: type: string algorithm: type: string enum: - rsa-sha256 key_length: type: integer enum: - 2048 version: type: integer description: Monotonically increasing per-domain key version. minimum: 1 status: type: string enum: - active activated_at: type: string format: date-time nullable: true previous_dkim_key: type: object nullable: true description: 'The retired previous key, or null when the domain had no active key before rotation. Retained in a `retiring` state so it can be revoked after the DNS propagation grace period. ' required: - id - selector - version - status properties: id: type: string format: uuid selector: type: string version: type: integer status: type: string enum: - retiring - revoked old_selector_retained: type: boolean description: 'False for this service: one selector is fixed per domain, so rotation replaces the TXT value at the existing _domainkey host. There is no dual-selector overlap; publish the replacement TXT promptly because signing switches immediately.' dns_records: type: array description: 'The DKIM DNS records the customer must publish, carrying the new key''s TXT value with verification reset to pending. ' items: $ref: '#/components/schemas/DNSRecord' example: record_type: email_domain_dkim_rotation domain_id: 123e4567-e89b-12d3-a456-426614174002 domain: example.com dkim: id: 123e4567-e89b-12d3-a456-42661417400a selector: telnyx1 algorithm: rsa-sha256 key_length: 2048 version: 2 status: active activated_at: '2026-09-11T12:00:00Z' previous_dkim_key: id: 123e4567-e89b-12d3-a456-426614174009 selector: telnyx1 version: 1 status: retiring old_selector_retained: false dns_records: - id: 123e4567-e89b-12d3-a456-42661417400b purpose: dkim record_type: TXT host: telnyx1._domainkey.example.com value: v=DKIM1; k=rsa; p=MIIBIjANBgkqh... actual_value: null priority: null required: true status: pending EmailDomainDKIMRotationResponse: type: object required: - data properties: data: $ref: '#/components/schemas/EmailDomainDKIMRotation' EmailDomainHealth: type: object required: - id - record_type - status - usable_for_sending - usable_for_inbound - verification - checked_at properties: id: type: string format: uuid description: Unique identifier for the email domain record_type: type: string enum: - email_domain_health description: Record type discriminator status: type: string enum: - pending - verifying - verified - failed - degraded - suspended description: Current domain status usable_for_sending: type: boolean description: Whether the domain is usable for sending email usable_for_inbound: type: boolean description: Whether the domain is usable for receiving inbound email verification: $ref: '#/components/schemas/EmailDomainVerification' checked_at: type: string format: date-time description: Timestamp of the last health check EmailDomainHealthResponse: type: object required: - data properties: data: $ref: '#/components/schemas/EmailDomainHealth' EmailDomainListResponse: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/EmailDomain' meta: oneOf: - $ref: '#/components/schemas/OffsetPaginationMeta' - $ref: '#/components/schemas/email_CursorPaginationMeta' EmailDomainResponse: type: object required: - data properties: data: $ref: '#/components/schemas/EmailDomain' EmailDomainStatus: type: string enum: - pending - verifying - verified - failed - degraded - suspended EmailDomainType: type: string enum: - custom - shared - shared_inbound EmailDomainVerification: type: object required: - ownership - spf - dkim - dmarc - mx properties: ownership: type: string enum: - pending - verified - not_required spf: type: string enum: - missing_optional - verified - failed - not_required dkim: type: string enum: - pending - verified - failed dmarc: type: string enum: - missing_optional - verified - failed mx: type: string enum: - not_required - pending - verified - failed EmailDraft: type: object description: An unsent, mutable draft message belonging to an inbox. properties: record_type: type: string enum: - email_draft id: type: string format: uuid inbox_id: type: string format: uuid status: type: string enum: - draft - sending - sent description: '`draft` until the draft is sent. A sent draft is retained for audit and becomes immutable. ' from: type: string nullable: true description: Sender address. Defaults to the inbox address at send time when null. from_name: type: string nullable: true to: type: array items: $ref: '#/components/schemas/EmailAddress' cc: type: array items: $ref: '#/components/schemas/EmailAddress' bcc: type: array items: $ref: '#/components/schemas/EmailAddress' reply_to: type: string nullable: true subject: type: string nullable: true text_body: type: string nullable: true html_body: type: string nullable: true headers: type: object additionalProperties: type: string description: Custom headers. Reply drafts carry `In-Reply-To` and `References`. attachments: type: array items: type: object labels: type: array items: type: string description: Mutable mailbox-state labels. Not propagated to Email Detail Records. tags: type: array items: type: string description: Transport/reporting attribution tags, propagated to Email Detail Records at send time. metadata: type: object description: Arbitrary customer-defined metadata. reply_to_message_id: type: string format: uuid nullable: true description: Inbound message this draft replies to. Server-owned; set only on reply drafts. thread_id: type: string format: uuid nullable: true description: Conversation thread inherited from the parent message. sent_message_id: type: string format: uuid nullable: true description: The email message created when this draft was sent. sent_at: type: string format: date-time nullable: true created_at: type: string format: date-time updated_at: type: string format: date-time required: - record_type - id - inbox_id - status EmailDraftListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EmailDraft' meta: $ref: '#/components/schemas/email_PaginationMeta' required: - data - meta EmailDraftRequest: type: object description: 'All fields are optional — a draft may be saved incomplete. `account_id`, `inbox_id`, `status`, `sent_at`, `sent_message_id`, `reply_to_message_id` and `thread_id` are server-owned and ignored if supplied. ' properties: from_email: type: string from_name: type: string to: type: array items: $ref: '#/components/schemas/EmailAddressInput' cc: type: array items: $ref: '#/components/schemas/EmailAddressInput' bcc: type: array items: $ref: '#/components/schemas/EmailAddressInput' reply_to: type: string subject: type: string maxLength: 255 text_body: type: string html_body: type: string text: type: string description: Alias for `text_body`, matching the send endpoint. html: type: string description: Alias for `html_body`, matching the send endpoint. headers: type: object additionalProperties: type: string attachments: type: array items: type: object labels: type: array items: type: string tags: type: array items: type: string metadata: type: object EmailDraftResponse: type: object properties: data: $ref: '#/components/schemas/EmailDraft' required: - data EmailEventCounts: type: object description: Recipient-level outcome counts for the queried time range. Each to, cc, and bcc recipient counts separately; repeated events of the same type for the same message and recipient count once. Partial MTA injection results count successful recipients as sent and unsuccessful recipients as failed. Only the ten listed event types are counted; other valid event types (scheduled, cancelled, sandbox, sending, rejected) are not included in stats. properties: queued: type: integer minimum: 0 sent: type: integer minimum: 0 delivered: type: integer minimum: 0 deferred: type: integer minimum: 0 bounced: type: integer minimum: 0 opened: type: integer minimum: 0 clicked: type: integer minimum: 0 complained: type: integer minimum: 0 unsubscribed: type: integer minimum: 0 failed: type: integer minimum: 0 required: - queued - sent - delivered - deferred - bounced - opened - clicked - complained - unsubscribed - failed EmailEventRates: type: object description: Recipient-level event rates as percentages, rounded to 2 decimal places. properties: delivery_rate: type: number format: float minimum: 0 description: Delivered recipients / queued recipients as a percentage. bounce_rate: type: number format: float minimum: 0 description: Bounced recipients / queued recipients as a percentage. deferred_rate: type: number format: float minimum: 0 description: Deferred recipients / queued recipients as a percentage. open_rate: type: number format: float minimum: 0 description: Recipients opened / recipients delivered as a percentage. click_rate: type: number format: float minimum: 0 description: Recipients clicked / recipients opened as a percentage. complaint_rate: type: number format: float minimum: 0 description: Recipients with a complaint feedback report / delivered recipients as a percentage. required: - delivery_rate - bounce_rate - deferred_rate - open_rate - click_rate - complaint_rate EmailEventStats: type: object properties: record_type: type: string enum: - email_event_stats counts: $ref: '#/components/schemas/EmailEventCounts' rates: $ref: '#/components/schemas/EmailEventRates' time_range: $ref: '#/components/schemas/TimeRange' required: - record_type - counts - rates - time_range EmailEventStatsResponse: type: object properties: data: $ref: '#/components/schemas/EmailEventStats' required: - data EmailEventType: type: string description: Bare stored event names returned by message history. In addition to the normal send and delivery lifecycle, polling can expose suppression, scan, and quarantine lifecycle rows. Sharp canonical names gw_reject, injection_timeout, and expired distinguish gateway rejection, ambiguous injection timeout, and MTA expiration. The failed and bounced names remain valid for system/admin failures and hard bounces respectively. Existing stored rows retain their original names. enum: - queued - deferred - scheduled - cancelled - sandbox - sending - sent - failed - delivered - bounced - complained - suppressed - rejected - opened - clicked - unsubscribed - daily_limit_exceeded - scan_deferred - quarantined - quarantine_released - quarantine_release_dispatched - quarantine_rejected - quarantine_expired - gw_reject - injection_timeout - expired EmailInbox: type: object properties: id: type: string format: uuid record_type: type: string enum: - email_inbox address: type: string format: email status: type: string enum: - active - paused domain_id: type: string format: uuid domain: type: string description: Domain name used by the inbox address. settings: type: object additionalProperties: true created_at: type: string format: date-time updated_at: type: string format: date-time required: - id - record_type - address - status - domain_id - domain - settings - created_at - updated_at EmailInboxListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EmailInbox' meta: $ref: '#/components/schemas/EmailInboxPaginationMeta' required: - data - meta EmailInboxPaginationMeta: type: object properties: page_size: type: integer minimum: 1 maximum: 250 page_cursor: type: string description: Cursor for the next inbox page, when more results are available. required: - page_size EmailInboxResponse: type: object properties: data: $ref: '#/components/schemas/EmailInbox' required: - data EmailMessage: type: object properties: record_type: type: string enum: - email_message id: type: string format: uuid status: $ref: '#/components/schemas/EmailMessageStatus' from: $ref: '#/components/schemas/EmailAddress' to: type: array items: $ref: '#/components/schemas/EmailAddress' cc: type: array items: $ref: '#/components/schemas/EmailAddress' bcc: type: array items: $ref: '#/components/schemas/EmailAddress' reply_to: type: string nullable: true subject: type: string template_id: type: string format: uuid nullable: true template_variables: type: object additionalProperties: true default: {} tags: type: array default: [] items: type: string description: Customer-supplied tags stored with the message. metadata: type: object additionalProperties: true default: {} description: Customer-supplied metadata stored with the message. attachments: type: array items: $ref: '#/components/schemas/AttachmentResponse' events: type: array items: $ref: '#/components/schemas/EmbeddedMessageEvent' created_at: type: string format: date-time scheduled_at: type: string format: date-time description: Present when a scheduled_at value was stored. Persists even after the scheduled send has been processed or cancelled. inline_css: type: boolean description: Present when true in the immediate create response. Not persisted; absent on subsequent GET requests. sandbox: type: boolean description: Present when sandbox mode was used. recipient_statuses: type: object description: 'Per-status recipient counts for the message. Present only for outbound messages with recipient rows. Keys are recipient statuses, values are counts. Example: `{"delivered": 998, "bounced": 2}`. ' additionalProperties: type: integer example: delivered: 998 bounced: 2 suppressed: type: array description: Recipients excluded from delivery by suppression checks, with reasons. On batch items, present when that item had suppressed recipients; all other recipients of the item still receive the message. For single sends this information appears at the top level of the response instead (see EmailMessageResponse.suppressed). items: $ref: '#/components/schemas/SuppressedRecipient' required: - record_type - id - status - from - to - cc - bcc - subject - reply_to - template_id - template_variables - tags - metadata - attachments - events - created_at EmailMessageDetail: allOf: - $ref: '#/components/schemas/EmailMessage' - type: object properties: text_body: type: string nullable: true description: Plain-text body submitted for the message. html_body: type: string nullable: true description: HTML body submitted for the message. required: - text_body - html_body EmailMessageDetailResponse: type: object properties: data: $ref: '#/components/schemas/EmailMessageDetail' required: - data EmailMessageListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EmailMessage' meta: $ref: '#/components/schemas/email_PaginationMeta' required: - data - meta EmailMessageResponse: type: object properties: data: $ref: '#/components/schemas/EmailMessage' suppressed: type: array description: Recipients removed by suppression checks when at least one recipient remains and the message is accepted. items: $ref: '#/components/schemas/SuppressedRecipient' required: - data EmailMessageStatus: type: string description: Current status of an email message. Lifecycle statuses (queued, scheduled, etc.) are set on creation. Delivery statuses (delivered, bounced, etc.) are updated by delivery event consumers. enum: - queued - scheduled - cancelled - sandbox - sending - sent - failed - deferred - delivered - bounced - complained - rejected - opened - clicked - unsubscribed EmailRecipient: type: object properties: record_type: type: string enum: - email_recipient id: type: string format: uuid description: Recipient UUID. message_id: type: string format: uuid description: Parent email message UUID. address: type: string format: email nullable: true description: Recipient email address. Null for BCC recipients (redacted for privacy). kind: type: string enum: - to - cc - bcc status: type: string enum: - queued - sending - sent - deferred - delivered - bounced - failed - gw_reject - cancelled - injection_timeout - expired description: Current per-recipient delivery status. billable: type: boolean description: Whether this recipient's delivery is billable (set on queue acceptance). sent_at: type: string format: date-time nullable: true delivered_at: type: string format: date-time nullable: true failed_at: type: string format: date-time nullable: true smtp_code: type: integer nullable: true description: SMTP response code when available (e.g. 550 for bounces). smtp_response: type: string nullable: true description: SMTP response message when available. required: - record_type - id - message_id - address - kind - status - billable EmailRecipientListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EmailRecipient' meta: type: object properties: page_size: type: integer minimum: 1 maximum: 100 page_cursor: type: string nullable: true description: Cursor for the next page. Absent when there are no more results. required: - page_size required: - data - meta EmailRecipientResponse: type: object properties: data: $ref: '#/components/schemas/EmailRecipient' required: - data EmailTemplate: allOf: - $ref: '#/components/schemas/EmailTemplateCommon' - type: object properties: subject: type: string maxLength: 255 nullable: true required: - subject EmailTemplateCommon: type: object properties: record_type: type: string enum: - email_template id: type: string format: uuid name: type: string maxLength: 255 html_body: type: string nullable: true text_body: type: string nullable: true variables: type: array description: Persisted variable names. In `explicit` mode this array preserves the exact provided order, duplicates, and string contents; in `automatic` mode it is derived from the stored subject and bodies. items: type: string maxLength: 255 variables_mode: type: string enum: - automatic - explicit description: '`automatic` when variable names are derived from template content; `explicit` when `variables` is the exact manually managed array.' strict_variables: type: boolean description: 'Whether strict variable validation is enabled for this template. When `true`, sends and renders that are missing a variable marked `required: true` in `variable_schema` fail with 422 naming the variable.' autoescape: type: boolean description: Whether HTML autoescaping is enabled for this template. When `true`, only rendered `html_body` expression output is HTML-escaped at the output boundary; `subject` and `text_body` are never autoescaped. variable_schema: type: object nullable: true description: Structured variable requirements, or `null` when the template uses only the legacy `variables` array. additionalProperties: $ref: '#/components/schemas/VariableSchemaEntry' created_at: type: string format: date-time updated_at: type: string format: date-time required: - record_type - id - name - html_body - text_body - variables - variables_mode - strict_variables - autoescape - variable_schema - created_at - updated_at EmailTemplateListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/EmailTemplate' meta: $ref: '#/components/schemas/email_PaginationMeta' required: - data - meta EmailTemplateResponse: type: object properties: data: $ref: '#/components/schemas/EmailTemplate' required: - data EmailValidation: type: object properties: record_type: type: string enum: - email_validation email: type: string valid: type: boolean risk_score: type: number format: float minimum: 0 did_you_mean: type: string description: Suggested correction for typo. Omitted when nil. checks: $ref: '#/components/schemas/EmailValidationChecks' required: - record_type - email - valid - risk_score - checks EmailValidationBatch: type: object description: Shape returned by the create endpoint. Includes duplicates_removed. properties: record_type: type: string enum: - email_validation_batch id: type: string format: uuid status: $ref: '#/components/schemas/EmailValidationBatchStatus' total: type: integer minimum: 0 duplicates_removed: type: integer minimum: 0 webhook_url: type: string format: uri required: - record_type - id - status - total - duplicates_removed EmailValidationBatchDetail: description: Shape returned by the GET endpoint. Does not include duplicates_removed. allOf: - type: object properties: record_type: type: string enum: - email_validation_batch id: type: string format: uuid status: $ref: '#/components/schemas/EmailValidationBatchStatus' total: type: integer minimum: 0 webhook_url: type: string format: uri completed_at: type: string format: date-time results: type: object description: Map keyed by original email address. Present only when the batch is completed. additionalProperties: $ref: '#/components/schemas/EmailValidationResult' required: - record_type - id - status - total EmailValidationBatchDetailResponse: type: object properties: data: $ref: '#/components/schemas/EmailValidationBatchDetail' required: - data EmailValidationBatchResponse: type: object properties: data: $ref: '#/components/schemas/EmailValidationBatch' required: - data EmailValidationBatchStatus: type: string enum: - pending - processing - completed - failed EmailValidationCheck: type: object properties: pass: type: boolean details: type: string description: Human-readable check detail. Omitted when nil. required: - pass EmailValidationChecks: type: object properties: syntax: $ref: '#/components/schemas/EmailValidationCheck' mx: $ref: '#/components/schemas/EmailValidationCheck' disposable: $ref: '#/components/schemas/EmailValidationCheck' role_based: $ref: '#/components/schemas/EmailValidationCheck' typo: $ref: '#/components/schemas/EmailValidationTypoCheck' required: - syntax - mx - disposable - role_based - typo EmailValidationResponse: type: object properties: data: $ref: '#/components/schemas/EmailValidation' required: - data EmailValidationResult: type: object properties: email: type: string valid: type: boolean risk_score: type: number format: float minimum: 0 did_you_mean: type: string description: Suggested correction for typo. Omitted when nil. checks: $ref: '#/components/schemas/EmailValidationChecks' required: - email - valid - risk_score - checks EmailValidationTypoCheck: allOf: - $ref: '#/components/schemas/EmailValidationCheck' - type: object properties: suggestion: type: string description: Suggested correction for common typos. Omitted when nil. EmailVerificationConfirmRequest: type: object required: - code properties: code: type: string minLength: 6 maxLength: 6 pattern: ^\d{6}$ description: The 6-digit code sent to the authorizer email. example: '482915' EmailVerificationStatus: type: object description: Verification state for a DIR's authorizer email. required: - record_type - email_verified - status properties: record_type: type: string enum: - email_verification description: Always `email_verification`. example: email_verification readOnly: true email_verified: type: boolean description: Whether the DIR's authorizer email has been confirmed. example: false status: type: string enum: - sent - verified - unverified description: '`sent` after a code is emailed; `verified` after a successful confirm; `unverified` when no verification is in progress.' example: sent expires_at: type: string format: date-time nullable: true description: When the outstanding code stops being accepted. Null when no verification is in progress. example: '2026-07-30T17:15:00Z' readOnly: true sends_remaining_today: type: integer nullable: true description: How many more codes may be requested for this DIR today. Null when the daily cap does not apply. example: 9 readOnly: true EmailVerificationStatusWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/EmailVerificationStatus' EmailWebhook: type: object required: - id - record_type - url - events - domain_id - created_at - updated_at properties: id: type: string format: uuid record_type: type: string enum: - email_webhook url: type: string format: uri description: HTTPS endpoint to deliver subscribed events to. events: type: array minItems: 1 items: $ref: '#/components/schemas/EmailWebhookEvent' description: 'Allowlist of event types delivered to this webhook. At least one event is required — there is no default-to-all. ' domain_id: type: string format: uuid created_at: type: string format: date-time updated_at: type: string format: date-time example: id: 123e4567-e89b-12d3-a456-426614174003 record_type: email_webhook url: https://example.com/webhooks/email events: - email.sent - email.delivered - email.bounced domain_id: 123e4567-e89b-12d3-a456-426614174000 created_at: '2026-06-18T12:00:00Z' updated_at: '2026-06-18T12:00:00Z' EmailWebhookEvent: type: string description: Event types accepted by domain webhook subscriptions. Allowlists match the legacy event_type, not canonical_event_type. Of the 22 accepted types, email.sending is stored but intentionally not published. Cancellation, daily-limit failures, and system failures publish after commit when a matching domain webhook is configured. enum: - email.scheduled - email.sandbox - email.queued - email.sending - email.sent - email.delivered - email.deferred - email.bounced - email.failed - email.complained - email.opened - email.clicked - email.unsubscribed - email.received - email.cancelled - email.daily_limit_exceeded - email_domain.created - email_domain.verified - email_domain.degraded - email_domain.suspended - email_domain.deleted - email_domain.dkim_rotated EmailWebhookListResponse: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/EmailWebhook' meta: $ref: '#/components/schemas/OffsetPaginationMeta' EmailWebhookRecipient: type: object properties: email: type: string format: email name: type: string nullable: true kind: type: string enum: - to - cc - bcc required: - email EmailWebhookResponse: type: object required: - data properties: data: $ref: '#/components/schemas/EmailWebhook' EmbeddedMessageEvent: type: object properties: type: $ref: '#/components/schemas/EmailEventType' occurred_at: type: string format: date-time payload: type: object additionalProperties: true required: - type - occurred_at description: An event embedded in a message response. The dedicated per-message events endpoint additionally returns event_type and canonical_event_type. EmbeddingBucketRequest: properties: bucket_name: type: string title: Bucket Name document_chunk_size: type: integer title: Document Chunk Size default: 1024 document_chunk_overlap_size: type: integer title: Document Chunk Overlap Size default: 512 embedding_model: allOf: - $ref: '#/components/schemas/SupportedEmbeddingModels' default: intfloat/multilingual-e5-large loader: allOf: - $ref: '#/components/schemas/SupportedEmbeddingLoaders' default: default type: object required: - bucket_name title: EmbeddingBucketRequest EmbeddingMetadata: properties: source: type: string title: Source checksum: type: string title: Checksum embedding: type: string title: Embedding filename: type: string title: Filename certainty: type: number title: Certainty loader_metadata: type: object title: Loader Metadata additionalProperties: true type: object required: - source - checksum - embedding - filename title: EmbeddingMetadata EmbeddingResponse: properties: data: type: object properties: task_id: type: string format: uuid title: Task ID task_name: type: string title: Task Name status: type: string title: Status created_at: type: string title: Created At finished_at: type: - string - 'null' title: Finished At user_id: type: string format: uuid title: User ID type: object required: - data title: EmbeddingResponse EmbeddingSimilaritySearchDocument: properties: document_chunk: type: string title: Document Chunk distance: type: number title: Distance metadata: $ref: '#/components/schemas/EmbeddingMetadata' type: object required: - document_chunk - distance - metadata title: EmbeddingSimilaritySearchDocument description: "Example document response from embedding service\n{\n \"document_chunk\": \"your status? This is Vanessa\ \ Bloome...\",\n \"distance\": 0.18607724,\n \"metadata\": {\n \"source\": \"https://us-central-1.telnyxstorage.com/scripts/bee_movie_script.txt\"\ ,\n \"checksum\": \"343054dd19bab39bbf6761a3d20f1daa\",\n \"embedding\": \"openai/text-embedding-ada-002\",\n\ \ \"filename\": \"bee_movie_script.txt\",\n \"certainty\": 0.9069613814353943,\n \"loader_metadata\": {}\n\ \ }\n}" EmbeddingSimilaritySearchRequest: properties: bucket_name: type: string title: Bucket Name query: type: string title: Query num_of_docs: type: integer title: Num Of Docs default: 3 type: object required: - bucket_name - query title: EmbeddingSimilaritySearchRequest EmbeddingSimilaritySearchResponse: properties: data: items: $ref: '#/components/schemas/EmbeddingSimilaritySearchDocument' type: array title: Data type: object required: - data title: EmbeddingSimilaritySearchResponse EmbeddingUrlRequest: properties: url: type: string title: URL description: The URL of the webpage to embed bucket_name: type: string title: Bucket Name description: Name of the bucket to store the embeddings. This bucket must already exist. type: object required: - url - bucket_name title: EmbeddingUrlRequest EmbeddingsBucketFiles: properties: filename: type: string title: Filename status: type: string title: Status created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At last_embedded_at: type: string format: date-time title: Last Embedded At error_reason: type: string title: Error Reason type: object required: - filename - status - created_at title: EmbeddingsBucketFiles EmbeddingsBucketFilesData: properties: data: items: $ref: '#/components/schemas/EmbeddingsBucketFiles' type: array title: Data type: object required: - data title: EmbeddingsBucketFilesData EmergencySettings: description: The emergency services settings for a phone number. type: object properties: emergency_enabled: type: boolean default: false description: Allows you to enable or disable emergency services on the phone number. In order to enable emergency services, you must also set an emergency_address_id. emergency_address_id: type: string description: Identifies the address to be used with emergency services. emergency_status: type: string description: Represents the state of the number regarding emergency activation. default: disabled enum: - disabled - active - provisioning - deprovisioning - provisioning-failed example: emergency_enabled: true emergency_address_id: '1315261609962112019' emergency_status: active EnabledFeatures: type: string enum: - telephony - messaging description: If `telephony` is enabled, the assistant will be able to make and receive calls. If `messaging` is enabled, the assistant will be able to send and receive messages. EncryptedMedia: type: - string - 'null' enum: - SRTP - null example: SRTP description: Enable use of SRTP for encryption. Can only be set when the SIP signaling transport protocol is TLS. EndConferenceRequest: type: object title: End Conference Request properties: command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same conference. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: {} Endpoint: description: URL of an S3-compatible storage endpoint, used to direct uploads and presigned download URLs to a non-AWS store (for example MinIO, Cloudflare R2, Wasabi, Backblaze B2, or Supabase). A bare host (https://s3.example.com) or a path-prefixed URL (https://xyz.supabase.co/storage/v1/s3) is accepted, and must use the http or https scheme. type: string format: uri pattern: ^https?:// example: https://s3.example.com EnhanceInstructionsRequest: properties: enhancement_prompt: anyOf: - type: string - type: 'null' title: Enhancement Prompt description: Optional guidance describing how the instructions should be enhanced. When provided, the LLM applies these requested changes in addition to fixing any identified issues. instructions: anyOf: - type: string - type: 'null' title: Instructions description: The instructions to enhance. When omitted, the assistant's existing instructions are used. type: object title: EnhanceInstructionsRequest EnqueueRequest: type: object title: Enqueue Request required: - queue_name properties: queue_name: description: The name of the queue the call should be put in. If a queue with a given name doesn't exist yet it will be created. type: string example: tier_1_support client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 max_wait_time_secs: description: The number of seconds after which the call will be removed from the queue. type: integer example: 600 max_size: description: The maximum number of calls allowed in the queue at a given time. Can't be modified for an existing queue. type: integer default: 100 example: 200 keep_after_hangup: type: boolean description: If set to true, the call will remain in the queue after hangup. In this case bridging to such call will fail with necessary information needed to re-establish the call. default: false example: true example: queue_name: support max_wait_time_secs: 600 max_size: 20 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 EnterpriseCreate: type: object required: - legal_name - organization_type - country_code - website - fein - industry - number_of_employees - organization_legal_type - doing_business_as - jurisdiction_of_incorporation - organization_contact - billing_contact - organization_physical_address - billing_address properties: legal_name: type: string example: Acme Plumbing LLC description: Your business's full registered legal name, exactly as it appears on your incorporation or tax documents, 3 to 64 characters. minLength: 3 maxLength: 64 organization_type: type: string enum: - commercial - government - non_profit example: commercial description: 'Organization category for vetting purposes: - `commercial` - for-profit business entities (LLC, corp, partnership, sole proprietorship). Most callers fall here. - `government` - federal/state/local government bodies. - `non_profit` - registered 501(c)(3)/equivalent (incl. educational institutions, charities, religious organisations).' country_code: type: string description: ISO 3166-1 alpha-2 country code. Currently `US` and `CA` are supported. example: US role_type: type: string enum: - enterprise - bpo description: '`enterprise` for an organization registering its own DIRs (the default, and the right choice when the calls display your own brand). `bpo` for a Business Process Outsourcer: a call center that places calls on behalf of other enterprises and displays their brand. A `bpo` enterprise describes the call center itself and cannot own a DIR. Each client the call center calls for gets its own `enterprise` in the same account, with the client''s DIR under it; that DIR is then linked to the `bpo` enterprise through `bpo_authorizations`. Fixed at creation.' example: enterprise default: enterprise website: type: string format: uri maxLength: 255 example: https://acmeplumbing.example.com description: Your business's public website address, including https://. Leave blank if your business has no website. fein: type: string description: US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent. example: 12-3456789 industry: type: string description: The industry your business operates in. Choose the closest match from the list; if your value is not accepted, pick the nearest category. example: technology enum: - accounting - finance - billing - collections - business - charity - nonprofit - communications - telecom - customer service - support - delivery - shipping - logistics - education - financial - banking - government - public - healthcare - health - pharmacy - medical - insurance - legal - law - notifications - scheduling - real estate - property - retail - ecommerce - sales - marketing - software - technology - tech - media - surveys - market research - travel - hospitality - hotel number_of_employees: type: string enum: - 1-10 - 11-50 - 51-200 - 201-500 - 501-2000 - 2001-10000 - 10001+ example: 51-200 description: Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current employee count. organization_legal_type: type: string enum: - corporation - llc - partnership - nonprofit - other example: llc description: 'Legal-entity form. Pick the form that matches your incorporation documents: - `corporation` - C-corp or S-corp. - `llc` - limited liability company. - `partnership` - general/limited partnership. - `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent. - `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional documents during vetting.' doing_business_as: type: string maxLength: 255 example: Acme Plumbing description: The trade name your business operates under if it is different from your legal name, also called a Doing Business As (DBA) name. Leave blank if you only use your legal name. jurisdiction_of_incorporation: type: string maxLength: 255 example: Delaware description: The state, province, or country where your business was legally incorporated, for example Delaware. customer_reference: type: string maxLength: 255 description: Your own label for this account. Enter any reference that helps you find it in your records. Telnyx does not use it during vetting. example: internal-id-12345 primary_business_domain_sic_code: type: string nullable: true description: The 4-digit Standard Industrial Classification code for your main line of business, which tells us what industry you operate in. Look it up in the SIC code directory if you are unsure. corporate_registration_number: type: string nullable: true description: The official number your company received when it was legally registered or incorporated (for example from your state or national business registry). It is on your certificate of incorporation. professional_license_number: type: string nullable: true description: If your business operates under a professional license (for example legal, medical, or financial services), enter the license number issued by the licensing authority. Leave blank if it does not apply. dun_bradstreet_number: type: string nullable: true description: Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business. Leave blank if you do not have one. organization_contact: $ref: '#/components/schemas/OrganizationContact' billing_contact: $ref: '#/components/schemas/BillingContact' organization_physical_address: $ref: '#/components/schemas/PhysicalAddress' billing_address: $ref: '#/components/schemas/BillingAddress' EnterpriseEmailVerificationConfirmRequest: type: object required: - code properties: code: type: string minLength: 6 maxLength: 6 pattern: ^\d{6}$ description: The 6-digit code sent to the enterprise account's contact email. example: '482915' EnterpriseEmailVerificationStatus: type: object description: Verification state for an enterprise account's contact email. required: - record_type - email_verified - status properties: record_type: type: string enum: - email_verification description: Always `email_verification`. example: email_verification readOnly: true email_verified: type: boolean description: Whether the enterprise account's contact email has been confirmed. example: false status: type: string enum: - sent - verified description: '`sent` after a code is emailed; `verified` after a successful confirm.' example: sent expires_at: type: string format: date-time nullable: true description: When the code just sent stops being accepted. Present on a send response; null on a confirm response. example: '2026-07-30T17:15:00Z' readOnly: true sends_remaining_today: type: integer nullable: true description: How many more codes may be requested for this enterprise account today. Present on a send response; null on a confirm response. example: 9 readOnly: true EnterpriseEmailVerificationStatusWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/EnterpriseEmailVerificationStatus' EnterpriseListPublic: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/EnterprisePublic' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' EnterprisePublic: type: object properties: id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 readOnly: true legal_name: type: string example: Acme Plumbing LLC description: Your business's full registered legal name, exactly as it appears on your incorporation or tax documents, 3 to 64 characters. organization_type: type: string example: commercial country_code: type: string example: US role_type: type: string enum: - enterprise - bpo example: enterprise website: type: string example: https://acmeplumbing.example.com description: Your business's public website address, including https://. Leave blank if your business has no website. fein: type: string example: 12-3456789 description: US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent. industry: type: string example: technology description: The industry your business operates in. Choose the closest match from the list; if your value is not accepted, pick the nearest category. number_of_employees: type: string example: 51-200 description: Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current employee count. organization_legal_type: type: string example: llc description: 'Legal-entity form. Pick the form that matches your incorporation documents: - `corporation` - C-corp or S-corp. - `llc` - limited liability company. - `partnership` - general/limited partnership. - `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent. - `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional documents during vetting.' doing_business_as: type: string example: Acme Plumbing description: The trade name your business operates under if it is different from your legal name, also called a Doing Business As (DBA) name. Leave blank if you only use your legal name. jurisdiction_of_incorporation: type: string example: Delaware description: The state, province, or country where your business was legally incorporated, for example Delaware. customer_reference: type: string description: Your own label for this account. Enter any reference that helps you find it in your records. Telnyx does not use it during vetting. example: internal-id-12345 primary_business_domain_sic_code: type: string nullable: true description: The 4-digit Standard Industrial Classification code for your main line of business, which tells us what industry you operate in. Look it up in the SIC code directory if you are unsure. example: null corporate_registration_number: type: string nullable: true description: The official number your company received when it was legally registered or incorporated (for example from your state or national business registry). It is on your certificate of incorporation. example: null professional_license_number: type: string nullable: true description: If your business operates under a professional license (for example legal, medical, or financial services), enter the license number issued by the licensing authority. Leave blank if it does not apply. example: null dun_bradstreet_number: type: string nullable: true description: Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business. Leave blank if you do not have one. example: null organization_contact: $ref: '#/components/schemas/OrganizationContact' billing_contact: $ref: '#/components/schemas/BillingContact' organization_physical_address: $ref: '#/components/schemas/PhysicalAddress' billing_address: $ref: '#/components/schemas/BillingAddress' created_at: type: string format: date-time example: '2026-04-26T18:06:51.940749Z' readOnly: true updated_at: type: string format: date-time example: '2026-04-26T18:09:24.785211Z' readOnly: true branded_calling_enabled: type: boolean description: True once Branded Calling has been activated on this enterprise (see `POST /enterprises/{id}/branded_calling`). number_reputation_enabled: type: boolean description: True once Phone Number Reputation has been enabled on this enterprise (see `POST /enterprises/{id}/reputation`). bpo_verification_status: type: string enum: - pending - approved - rejected nullable: true description: Whether Telnyx has approved this BPO (Business Process Outsourcer) account. Only set for accounts created with `role_type` `bpo`; `null` for normal enterprises. A BPO enterprise must be `approved` before a DIR can be linked to it through `bpo_authorizations`. example: approved bpo_verification_rejection_reason: type: string nullable: true description: Reason Telnyx rejected the BPO (Business Process Outsourcer) verification, when `bpo_verification_status` is `rejected`; `null` otherwise. example: Business registration document could not be verified. EnterprisePublicWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/EnterprisePublic' EnterpriseReputationCreate: type: object required: - loa_document_id additionalProperties: false properties: loa_document_id: type: string minLength: 1 maxLength: 255 description: Id of the signed Letter of Authorization document, returned by the Telnyx Documents API after upload (upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents). example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c check_frequency: allOf: - $ref: '#/components/schemas/ReputationCheckFrequency' default: business_daily description: Refresh cadence. Defaults to `business_daily` if omitted. EnterpriseReputationLoaRender: type: object description: All fields optional. The enterprise identity, address, and authorized-representative contact are read from the enterprise record keyed by the path parameter. properties: agent: $ref: '#/components/schemas/number-reputation_AgentInput' signature: $ref: '#/components/schemas/LoaSignaturePayload' EnterpriseReputationLoaUpdate: type: object required: - loa_document_id properties: loa_document_id: type: string minLength: 1 maxLength: 255 description: Id of the new signed LOA document (from the Telnyx Documents API). Changing it resets LOA approval; the new document must be approved before more numbers can be added. example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c EnterpriseReputationPublic: type: object properties: enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 status: $ref: '#/components/schemas/ReputationStatus' check_frequency: $ref: '#/components/schemas/ReputationCheckFrequency' loa_document_id: type: - string - 'null' description: Id of the signed LOA document. example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c loa_status: $ref: '#/components/schemas/ReputationLoaStatusPublic' rejection_reasons: type: - array - 'null' items: type: string description: Populated when `status` is `rejected`. external_verification_status: anyOf: - $ref: '#/components/schemas/ExternalVerificationStatus' - type: 'null' description: Review state of the enterprise's ownership proof for numbers hosted with another provider. `null` when no proof was submitted. webhook_url: type: - string - 'null' format: uri description: HTTPS URL that receives number-ownership webhook events for this enterprise. example: https://example.com/webhooks/telnyx created_at: type: string format: date-time example: '2026-04-26T18:06:51.940749Z' readOnly: true updated_at: type: string format: date-time example: '2026-04-26T18:09:24.785211Z' readOnly: true EnterpriseReputationPublicWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/EnterpriseReputationPublic' EnterpriseReputationUpdateFrequency: type: object required: - check_frequency additionalProperties: false properties: check_frequency: $ref: '#/components/schemas/ReputationCheckFrequency' EnterpriseReputationWebhookUpdate: type: object required: - webhook_url properties: webhook_url: type: - string - 'null' format: uri maxLength: 2048 description: HTTPS URL on a publicly routable host. Send `null` to stop receiving number-ownership events. example: https://example.com/webhooks/telnyx EnterpriseUpdate: type: object description: All fields are optional; only the ones supplied are updated. The same field-level rules from `EnterpriseCreateRequest` apply. properties: legal_name: type: string description: Your business's full registered legal name, exactly as it appears on your incorporation or tax documents, 3 to 64 characters. minLength: 3 maxLength: 64 website: type: string format: uri maxLength: 255 description: Your business's public website address, including https://. Leave blank if your business has no website. fein: type: string description: US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent. industry: type: string description: The industry your business operates in. Choose the closest match from the list; if your value is not accepted, pick the nearest category. enum: - accounting - finance - billing - collections - business - charity - nonprofit - communications - telecom - customer service - support - delivery - shipping - logistics - education - financial - banking - government - public - healthcare - health - pharmacy - medical - insurance - legal - law - notifications - scheduling - real estate - property - retail - ecommerce - sales - marketing - software - technology - tech - media - surveys - market research - travel - hospitality - hotel number_of_employees: type: string description: Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current employee count. organization_legal_type: type: string description: 'Legal-entity form. Pick the form that matches your incorporation documents: - `corporation` - C-corp or S-corp. - `llc` - limited liability company. - `partnership` - general/limited partnership. - `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent. - `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional documents during vetting.' doing_business_as: type: string maxLength: 255 description: The trade name your business operates under if it is different from your legal name, also called a Doing Business As (DBA) name. Leave blank if you only use your legal name. customer_reference: type: string maxLength: 255 description: Your own label for this account. Enter any reference that helps you find it in your records. Telnyx does not use it during vetting. primary_business_domain_sic_code: type: string nullable: true description: The 4-digit Standard Industrial Classification code for your main line of business, which tells us what industry you operate in. Look it up in the SIC code directory if you are unsure. corporate_registration_number: type: string nullable: true description: The official number your company received when it was legally registered or incorporated (for example from your state or national business registry). It is on your certificate of incorporation. professional_license_number: type: string nullable: true description: If your business operates under a professional license (for example legal, medical, or financial services), enter the license number issued by the licensing authority. Leave blank if it does not apply. dun_bradstreet_number: type: string nullable: true description: Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business. Leave blank if you do not have one. organization_contact: $ref: '#/components/schemas/OrganizationContact' billing_contact: $ref: '#/components/schemas/BillingContact' organization_physical_address: $ref: '#/components/schemas/PhysicalAddress' billing_address: $ref: '#/components/schemas/BillingAddress' jurisdiction_of_incorporation: type: string maxLength: 255 description: The state, province, or country where your business was legally incorporated, for example Delaware. example: Delaware EntityType: title: EntityType enum: - PRIVATE_PROFIT - PUBLIC_PROFIT - NON_PROFIT - GOVERNMENT - SOLE_PROPRIETOR description: Entity type behind the brand. This is the form of business establishment. example: PRIVATE_PROFIT type: string EnumObjecToObjecttResponse: title: EnumObjecToObjecttResponse type: object additionalProperties: true example: PROFESSIONAL: industryId: professional-services displayName: Professional Services description: Professional services. REAL_ESTATE: industryId: real-estate displayName: Real Estate description: Buying and Selling of residential and commercial properties. EnumObjectListResponse: title: EnumObjectListResponse type: array items: type: object additionalProperties: true example: - networkId: 10000 displayName: string osrBitmaskIndex: 32 EnumObjectToStringResponse: title: EnumObjectToStringResponse type: object additionalProperties: true example: AREIS: AREIS BANDW: Bandwidth SINCH: Sinch EnumPaginatedResponse: title: EnumPaginatedResponse type: object required: - page - totalRecords - records properties: page: type: integer totalRecords: type: integer records: type: array items: type: object additionalProperties: true example: page: 1 totalRecords: 2 records: - isin: US68243Q1067 iso2: US symbol: FLWS exchange: NASDAQ displayName: 1-800 FLOWERS.COM, Inc. - isin: US88025U1097 iso2: US symbol: TXG exchange: NASDAQ displayName: 10X GENOMICS INC CLASS A EnumStringListResponse: title: EnumStringListResponse type: array items: type: string example: - BASIC_ACCOUNT - SMALL_ACCOUNT - MEDIUM_ACCOUNT - LARGE_ACCOUNT - KEY_ACCOUNT Error: required: - code - title properties: code: type: string x-format: int64 title: type: string detail: type: string description: A human-readable explanation of the error. description: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true example: title: Invalid street address source: pointer: /street_address code: '20207' description: The street address provided is invalid. type: object ErrorFrame: type: object description: Server-to-client frame indicating an error during synthesis. The connection is closed shortly after. properties: type: type: string const: error description: Frame type identifier. error: type: string description: Error message describing what went wrong. ErrorItem: type: object additionalProperties: false properties: code: type: string enum: - invalid_request - invalid_token_key - unauthorized - token_key_blocked - resource_blocked - budget_exceeded - end_user_budget_exceeded - model_not_in_catalog - rate_limit_exceeded - concurrency_limit_exceeded - not_found - conflict - idempotency_conflict - precondition_failed - precondition_required - enforcement_unavailable - upstream_error - upstream_timeout - limit_out_of_range - prompt_blocked - response_blocked - invalid_metadata - cursor_expired title: type: string detail: type: string meta: type: object additionalProperties: false properties: scope: $ref: '#/components/schemas/ai-gateway-resources_Scope' resets_at: anyOf: - type: string format: date-time - type: 'null' request_id: type: string format: uuid required: - request_id required: - code - title - detail - meta ErrorList: type: object required: - errors properties: errors: type: array items: $ref: '#/components/schemas/BlocksErrorObject' ErrorMeta: type: object properties: url: type: string example: https://docs.telnyx.com/api/errors/10005 ErrorObject: type: object properties: code: type: string description: Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead. enum: - '10001' - '10006' - '10007' - '10011' - '10015' - '10016' - '10019' - domain_graduation_limit_exceeded - recipient_suppressed - reputation_suspended - '404' - '500' - '10027' - '10036' title: type: string detail: description: Human-readable error detail. Changeset responses may return a structured object. oneOf: - type: string - type: object additionalProperties: true source: type: object additionalProperties: true nullable: true meta: type: object additionalProperties: true nullable: true description: Additional metadata. Present on 401 errors with a documentation URL. required: - code - title - detail ErrorRecord: type: object properties: code: type: string description: an application-specific error code, expressed as a stringified 5-digit integer example: '10003' title: type: string description: a short, human-readable summary of the problem, with NO punctuation, that SHOULD NOT CHANGE from occurrence to occurrence of the problem, except for purposes of localization example: Metrics invalid values detail: type: string description: a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized example: 'Available metrics values for sip-trunking: connected,cost,completed,call_sec,attempted,billed_sec.' source: $ref: '#/components/schemas/legacy_published_account_billing_usage_reports_SourceResponse' meta: $ref: '#/components/schemas/MetaResponse' ErrorResponse: type: object properties: 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/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. Extracted into a single named schema so the recursive union is defined once (was previously inlined at every operand site).' oneOf: - $ref: '#/components/schemas/ComparisonExpression' - $ref: '#/components/schemas/BooleanOpExpression' - $ref: '#/components/schemas/ArithmeticExpression' - $ref: '#/components/schemas/DynamicVariableExpression' - $ref: '#/components/schemas/StringLiteralExpression' - $ref: '#/components/schemas/NumberLiteralExpression' - $ref: '#/components/schemas/BooleanLiteralExpression' discriminator: mapping: arithmetic: '#/components/schemas/ArithmeticExpression' bool_literal: '#/components/schemas/BooleanLiteralExpression' bool_op: '#/components/schemas/BooleanOpExpression' comparison: '#/components/schemas/ComparisonExpression' number_literal: '#/components/schemas/NumberLiteralExpression' string_literal: '#/components/schemas/StringLiteralExpression' variable: '#/components/schemas/DynamicVariableExpression' propertyName: type ExpressionCondition: description: 'Edge condition evaluated as a deterministic expression AST. The expression is computed against runtime dynamic variables and must evaluate to a boolean. Prefer this over `LLMCondition` when the rule is a clean function of known variables — it''s cheaper and predictable.' example: expression: left: name: user_age type: variable op: '>=' right: type: number_literal value: 18 type: comparison type: expression properties: expression: $ref: '#/components/schemas/Expression' type: const: expression title: Type type: string required: - type - expression title: ExpressionCondition type: object ExternalConnection: type: object title: External Connection properties: id: $ref: '#/components/schemas/external-voice-integrations_IntId' record_type: type: string description: Identifies the type of the resource. example: external_connection active: $ref: '#/components/schemas/ConnectionActive' credential_active: $ref: '#/components/schemas/CredentialActive' external_sip_connection: $ref: '#/components/schemas/ExternalSipConnection' tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null inbound: type: object properties: channel_limit: type: integer description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with this connection. default: null example: 10 outbound: type: object properties: channel_limit: type: integer description: When set, this will limit the number of concurrent outbound calls to phone numbers associated with this connection. default: null example: 10 outbound_voice_profile_id: $ref: '#/components/schemas/external-voice-integrations_OutboundVoiceProfileId' created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' example: id: '1930241863466354012' record_type: external_connection external_sip_connection: zoom credential_active: false active: false created_at: '2022-06-29T19:23:59Z' updated_at: '2022-06-29T19:39:47Z' outbound: outbound_voice_profile_id: '1911630617284445511' ExternalConnectionPhoneNumber: type: object title: Phone number details with relation to an external connection properties: ticket_id: $ref: '#/components/schemas/UUID' telephone_number: type: string description: Phone number in E164 format. number_id: type: string description: Phone number ID from the Telnyx API. civic_address_id: type: string format: uuid description: Identifies the civic address assigned to the phone number. location_id: type: string format: uuid description: Identifies the location assigned to the phone number. displayed_country_code: type: string description: The iso country code that will be displayed to the user when they receive a call from this phone number. acquired_capabilities: type: array items: type: string enum: - FirstPartyAppAssignment - InboundCalling - Office365 - OutboundCalling - UserAssignment description: The capabilities that are available for this phone number on Microsoft Teams. ExternalLLM: properties: model: type: string description: Model identifier to use with the external LLM endpoint. base_url: type: string description: Base URL for the external LLM endpoint. llm_api_key_ref: type: string description: Integration secret identifier for the external LLM API key. authentication_method: $ref: '#/components/schemas/AuthenticationMethod' certificate_ref: type: string description: Integration secret identifier for the client certificate used with certificate authentication. token_retrieval_url: type: string description: URL used to retrieve an access token when certificate authentication is enabled. forward_metadata: type: boolean default: false description: 'When `true`, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{"extra_metadata": {"customer_name": "Jane", "account_id": "acct_789", "telnyx_agent_target": "+13125550100", "telnyx_end_user_target": "+13125550123"}}`. Distinct from OpenAI''s native `metadata` field, which has its own size and type limits.' type: object required: - model - base_url title: ExternalLLM ExternalLLMReq: properties: model: type: string description: Model identifier to use with the external LLM endpoint. base_url: type: string description: Base URL for the external LLM endpoint. llm_api_key_ref: type: string description: Integration secret identifier for the external LLM API key. authentication_method: $ref: '#/components/schemas/AuthenticationMethod' certificate_ref: type: string description: Integration secret identifier for the client certificate used with certificate authentication. token_retrieval_url: type: string description: URL used to retrieve an access token when certificate authentication is enabled. forward_metadata: type: boolean default: false description: 'When `true`, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{"extra_metadata": {"customer_name": "Jane", "account_id": "acct_789", "telnyx_agent_target": "+13125550100", "telnyx_end_user_target": "+13125550123"}}`. Distinct from OpenAI''s native `metadata` field, which has its own size and type limits.' type: object required: - model - base_url title: ExternalLLMReq ExternalSipConnection: title: External SIP Connection type: string description: The service that will be consuming this connection. enum: - zoom - operator_connect default: zoom example: zoom ExternalSipConnectionZoomOnly: title: External SIP Connection type: string description: The service that will be consuming this connection. enum: - zoom default: zoom example: zoom ExternalVerification: type: object properties: enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 status: $ref: '#/components/schemas/ExternalVerificationStatus' document_ids: type: array items: type: string description: The ownership-proof documents on file. example: - 2a7e8337-e803-4057-a4ae-26c40eb0bc6c phone_numbers: type: array items: type: string description: The phone numbers you listed with the documents. example: - '+13125550142' rejection_reason: type: - string - 'null' description: Why the proof was rejected. Set only when `status` is `rejected`. example: The invoice does not show the phone numbers. submitted_at: type: - string - 'null' format: date-time readOnly: true example: '2026-10-05T09:12:44Z' reviewed_at: type: - string - 'null' format: date-time readOnly: true example: '2026-10-06T14:03:10Z' ExternalVerificationStatus: type: string enum: - pending - approved - rejected description: Review state of the ownership proof that allows adding phone numbers hosted with another provider. example: pending ExternalVerificationSubmit: type: object required: - document_ids properties: document_ids: type: array minItems: 1 maxItems: 10 items: type: string minLength: 1 maxLength: 255 description: Ids of uploaded documents (Documents API) proving the enterprise owns its phone numbers hosted with another provider, for example a carrier invoice or account statement. example: - 2a7e8337-e803-4057-a4ae-26c40eb0bc6c phone_numbers: type: array maxItems: 1000 items: type: string description: Optional. The phone numbers hosted with another provider that the documents cover, in E.164 format. Shown to the reviewer to match the documents to your numbers; you can still add numbers that are not listed here, and each is checked on its own. example: - '+13125550142' ExternalVerificationWrapped: type: object properties: data: $ref: '#/components/schemas/ExternalVerification' required: - data ExternalVetting: title: ExternalVetting type: object properties: evpId: title: Evpid maxLength: 10 type: string description: External vetting provider ID for the brand. vettingId: title: vettingId type: string description: Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided by the vetting provider at time of vetting. vettingToken: title: vettingToken type: string description: Required by some providers for vetting record confirmation. vettingScore: title: vettingScore type: integer description: Vetting score ranging from 0-100. vettingClass: title: Vettingclass type: string description: Identifies the vetting classification. vettedDate: title: vettedDate type: string description: Vetting effective date. This is the date when vetting was completed, or the starting effective date in ISO 8601 format. If this date is missing, then the vetting was not complete or not valid. createDate: title: createDate type: string description: Vetting submission date. This is the date when the vetting request is generated in ISO 8601 format. ExternalVettingList: title: External vetting list type: array items: $ref: '#/components/schemas/ExternalVetting' ExternalWdrDetailRecordDto: type: object properties: id: type: string description: WDR id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 created_at: type: string description: Record created time format: date-time example: '2020-07-01T00:00:00-06:00' cost: $ref: '#/components/schemas/WirelessCost' mcc: type: string description: Mobile country code. example: '204' mnc: type: string description: Mobile network code. example: '01' downlink_data: $ref: '#/components/schemas/DownlinkData' duration_seconds: type: number description: Session duration in seconds. example: 1 imsi: type: string description: International mobile subscriber identity. example: '123' rate: $ref: '#/components/schemas/WirelessRate' sim_group_name: type: string description: Defined sim group name example: sim name sim_group_id: type: string description: Sim group unique identifier example: f05a189f-7c46-4531-ac56-1460dc465a42 sim_card_id: type: string description: Sim card unique identifier example: 877f80a6-e5b2-4687-9a04-88076265720f phone_number: type: string description: Phone number example: '+12345678910' uplink_data: $ref: '#/components/schemas/UplinkData' record_type: type: string example: wdr ExternalWdrGetDetailResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/ExternalWdrDetailRecordDto' meta: $ref: '#/components/schemas/wireless-public_PaginationMeta' FallbackConfig: properties: model: type: string description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable. llm_api_key_ref: type: string description: Integration secret identifier for the fallback model API key. external_llm: $ref: '#/components/schemas/ExternalLLM' type: object title: FallbackConfig FallbackConfigReq: properties: model: type: string description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable. llm_api_key_ref: type: string description: Integration secret identifier for the fallback model API key. external_llm: $ref: '#/components/schemas/ExternalLLMReq' type: object title: FallbackConfigReq Fax: type: object properties: record_type: description: Identifies the type of the resource. type: string example: fax enum: - fax id: $ref: '#/components/schemas/Id' connection_id: $ref: '#/components/schemas/ConnectionId' direction: $ref: '#/components/schemas/Direction' media_url: $ref: '#/components/schemas/MediaUrl' media_name: $ref: '#/components/schemas/MediaName' to: $ref: '#/components/schemas/To' from: $ref: '#/components/schemas/From' from_display_name: description: The string used as the caller id name (SIP From Display Name) presented to the destination (`to` number). type: string example: Company Name quality: $ref: '#/components/schemas/Quality' status: description: Status of the fax type: string example: queued enum: - queued - media.processed - originated - sending - delivered - failed - initiated - receiving - media.processing - received webhook_url: description: URL that will receive fax webhooks type: string webhook_failover_url: description: Optional failover URL that will receive fax webhooks if webhook_url doesn't return a 2XX response type: string store_media: description: Should fax media be stored on temporary URL. It does not support media_name. type: boolean stored_media_url: description: If store_media was set to true, this is a link to temporary location. Link expires after 10 minutes. type: string preview_url: description: If `store_preview` was set to `true`, this is a link to temporary location. Link expires after 10 minutes. type: string client_state: description: State received from a command. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d created_at: description: ISO 8601 timestamp when resource was created type: string format: date-time updated_at: description: ISO 8601 timestamp when resource was updated type: string format: date-time failure_reason: description: 'Customer-facing failure reason for the fax. Present on every fax object (null when the fax has not failed). Mapped from the more granular `internal_failure_reason`. Common values include: `receiver_call_dropped`, `sender_call_dropped`, `sender_canceled`, `carrier_lost`, `service_unavailable`, `fax_signaling_error`, `receiver_communication_error`, `sender_communication_error`, `receiver_decline`, `receiver_recovery_on_timer_expire`, `receiver_no_response`, `receiver_invalid_number_format`, `receiver_no_answer`, `receiver_incompatible_destination`, `receiver_unallocated_number`, `destination_unreachable`, `user_busy`, `invalid_ecm_response_from_receiver`, `fax_initial_communication_timeout`, `destination_not_in_service_plan`, `account_disabled`, `destination_invalid`, `no_outbound_profile`, `destination_not_in_countries_whitelist`, `user_channel_limit_exceeded`, `outbound_profile_channel_limit_exceeded`, `connection_channel_limit_exceeded`, `outbound_profile_daily_spend_limit_exceeded`, `unverified_origination_number`, `unverified_destination_not_allowed`, `file_format_invalid`, `file_download_failed`, `file_size_limit_exceeded`, `page_count_limit_exceeded`, `media_processing_exception`.' type: - string - 'null' example: null internal_failure_reason: description: Internal, more granular failure reason for the fax. Present on every fax object (null when the fax has not failed). Useful for deeper debugging beyond the customer-facing `failure_reason`. type: - string - 'null' example: null example: record_type: fax id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 connection_id: c-1 direction: outbound from: '+123' to: '+456' media_url: http://www.example.com/fax.pdf store_media: true stored_media_url: https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51 preview_url: https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b_preview.tiff?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51 quality: high webhook_url: http://www.example.com/webhooks webhook_failover_url: '' status: queued failure_reason: null internal_failure_reason: null client_state: aGF2ZSBhIG5pY2UgZGF5ID1d created_at: '2020-05-05T09:59:12Z' updated_at: '2020-05-05T09:59:12Z' FaxApplication: type: object title: Fax Application properties: id: $ref: '#/components/schemas/IntId' record_type: type: string description: Identifies the type of the resource. example: fax_application application_name: $ref: '#/components/schemas/ApplicationName' active: $ref: '#/components/schemas/ConnectionActive' anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' webhook_event_url: $ref: '#/components/schemas/WebhookEventUrl' webhook_event_failover_url: $ref: '#/components/schemas/WebhookEventFailoverUrl' webhook_timeout_secs: $ref: '#/components/schemas/WebhookTimeoutSecs' tags: type: array items: type: string description: Tags associated with the Fax Application. example: - tag1 - tag2 default: [] inbound: type: object properties: channel_limit: type: integer description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with this connection. default: null example: 10 sip_subdomain: type: string description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric value. 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. The target is either another node in the same flow (`NodeTarget`) or a different assistant (`AssistantTarget`). Multiple edges may share a `start_node_id`. On calls, `expression` conditions are evaluated before the model turn and take precedence over `llm` conditions regardless of declaration order, while `llm` conditions are offered to the assistant''s model as transition tools and fire when the model selects one. On chat channels, an `expression` condition that is true when the turn begins routes before the reply is generated; all conditioned edges that remain are considered together in declaration order after the reply, and the first true one wins.' properties: condition: description: 'Condition that gates the transition. Discriminated by `type`: `llm`, `expression`.' discriminator: mapping: expression: '#/components/schemas/ExpressionCondition' llm: '#/components/schemas/LLMCondition' default: '#/components/schemas/DefaultCondition' propertyName: type oneOf: - $ref: '#/components/schemas/LLMCondition' - $ref: '#/components/schemas/ExpressionCondition' - $ref: '#/components/schemas/DefaultCondition' title: Condition id: description: Caller-supplied unique identifier for this edge within the flow. example: e_age_gate title: Id type: string start_node_id: description: ID of the node this edge transitions away from. title: Start Node Id type: string target: description: 'Destination of the transition. Discriminated by `type`: `node` (jump to another node in this flow) or `assistant` (hand off to a different assistant).' discriminator: mapping: assistant: '#/components/schemas/AssistantTarget' node: '#/components/schemas/NodeTarget' propertyName: type oneOf: - $ref: '#/components/schemas/NodeTarget' - $ref: '#/components/schemas/AssistantTarget' title: Target required: - id - start_node_id - target - condition title: FlowEdge type: object FlowNode: description: One step in a conversation flow, as returned by the API. properties: external_llm: $ref: '#/components/schemas/ExternalLLM' description: Override for `Assistant.external_llm` while this node is active. Use this to route a node's turns to a different external LLM (different `model`, `base_url`, credentials). Part of the LLM bundle — see `model` for cascade semantics. Mutually exclusive with `model` on the node (a single LLM identity per node). id: description: Caller-supplied unique identifier for this node within the flow. title: Id type: string instructions: description: Prompt that drives the LLM while this node is active. Required. title: Instructions type: string instructions_mode: default: replace description: 'How `instructions` combine with the assistant-level instructions. `replace` (default): the node''s instructions are used alone. `append`: the node''s instructions are concatenated after the assistant''s instructions.' enum: - replace - append title: Instructions Mode type: string llm_api_key_ref: description: Override for `Assistant.llm_api_key_ref` while this node is active. Part of the LLM bundle — see `model` for cascade semantics. title: Llm Api Key Ref type: string model: description: 'Override for `Assistant.model` while this node is active. Part of the LLM bundle (`model` + `llm_api_key_ref` + `external_llm`): when any of the three is set on the node, all three are taken from the node and the assistant-level LLM identity is not consulted. When none of the three is set, the assistant''s bundle cascades unchanged.' title: Model type: string name: description: Optional human-readable label, displayed in authoring UIs. title: Name type: string position: $ref: '#/components/schemas/NodePosition' description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips so frontends can persist graph layout across reloads. shared_tool_ids: description: IDs of shared (org-level) tools available at this node. Knowledge bases are attached the same way — via a shared retrieval tool. Tools not listed here are not callable while this node is active. items: type: string title: Shared Tool Ids type: array tools: description: Full tool definitions for this node, resolved from `shared_tool_ids` server-side. Populated on responses so clients can render the flow without a follow-up fetch per shared tool. Ignored on input — set `shared_tool_ids` to configure a node's tools. items: $ref: '#/components/schemas/AssistantTools' title: Tools type: array tools_mode: default: replace description: 'How `shared_tool_ids` combine with the assistant-level tool set. `replace` (default): only the node''s tools are callable. `append`: the node''s tools are added to the assistant''s tools. Ignored when `shared_tool_ids` is null.' enum: - replace - append title: Tools Mode type: string transcription: $ref: '#/components/schemas/TranscriptionSettings' description: Per-node transcription override (response form). type: const: prompt default: prompt description: Node kind discriminator. `prompt` is an LLM-driven step. title: Type type: string voice_settings: $ref: '#/components/schemas/inference-embedding_VoiceSettings' description: Per-node voice override (response form). required: - id - instructions title: FlowNode type: object FlowNodeReq: description: 'One step in a conversation flow, as supplied by API clients. Each node carries the prompt, tool scope, and optional overrides for model/voice/transcription. Unset overrides cascade from the assistant.' example: id: n_intake instructions: Greet the caller and ask what they're calling about. name: Intake position: x: 120 y: 80 shared_tool_ids: - tool-faq-kb type: prompt properties: external_llm: $ref: '#/components/schemas/ExternalLLMReq' description: Override for `Assistant.external_llm` while this node is active. Use this to route a node's turns to a different external LLM (different `model`, `base_url`, credentials). Part of the LLM bundle — see `model` for cascade semantics. Mutually exclusive with `model` on the node (a single LLM identity per node). id: description: Caller-supplied unique identifier for this node within the flow. example: n_intake title: Id type: string instructions: description: Prompt that drives the LLM while this node is active. Required. example: Greet the caller and ask what they're calling about. title: Instructions type: string instructions_mode: default: replace description: 'How `instructions` combine with the assistant-level instructions. `replace` (default): the node''s instructions are used alone. `append`: the node''s instructions are concatenated after the assistant''s instructions.' enum: - replace - append title: Instructions Mode type: string llm_api_key_ref: description: Override for `Assistant.llm_api_key_ref` while this node is active. Part of the LLM bundle — see `model` for cascade semantics. example: my-key-ref title: Llm Api Key Ref type: string model: description: 'Override for `Assistant.model` while this node is active. Part of the LLM bundle (`model` + `llm_api_key_ref` + `external_llm`): when any of the three is set on the node, all three are taken from the node and the assistant-level LLM identity is not consulted. When none of the three is set, the assistant''s bundle cascades unchanged.' example: moonshotai/Kimi-K2.6 title: Model type: string name: description: Optional human-readable label, displayed in authoring UIs. example: Intake title: Name type: string position: $ref: '#/components/schemas/NodePosition' description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips so frontends can persist graph layout across reloads. example: x: 120 y: 80 shared_tool_ids: description: IDs of shared (org-level) tools available at this node. Knowledge bases are attached the same way — via a shared retrieval tool. Tools not listed here are not callable while this node is active. example: - tool-faq-kb - tool-billing-lookup items: type: string title: Shared Tool Ids type: array tools_mode: default: replace description: 'How `shared_tool_ids` combine with the assistant-level tool set. `replace` (default): only the node''s tools are callable. `append`: the node''s tools are added to the assistant''s tools. Ignored when `shared_tool_ids` is null.' enum: - replace - append title: Tools Mode type: string transcription: $ref: '#/components/schemas/TranscriptionSettings' description: Per-node transcription override (model/language/region). Unset fields cascade from the assistant-level transcription. A node that sets `model`, `fallback_models`, or `challenger` doesn't inherit the assistant's `fallback_models` or `challenger`; it uses only the ones it sets. Otherwise it inherits them, and they must fit the model and language the node runs; a change they no longer fit is rejected. type: const: prompt default: prompt description: Node kind discriminator. `prompt` (default) is an LLM-driven step; `tool` is a standalone tool execution and `speak` a scripted message (see `ToolNodeReq` / `SpeakNodeReq`). title: Type type: string voice_settings: $ref: '#/components/schemas/inference-embedding_VoiceSettings' description: Per-node voice override. Only fields set here override the assistant-level voice settings; unset fields cascade. required: - id - instructions title: FlowNodeReq type: object ForbiddenError: allOf: - $ref: '#/components/schemas/GenericError' - properties: code: example: '10010' type: string title: example: Authorization failed type: string detail: example: You do not have permission to perform the requested action on the specified resource or resources. type: string meta: type: object properties: url: type: string example: https://developers.telnyx.com/docs/overview/errors/10010 type: object ForgetResponse: properties: data: $ref: '#/components/schemas/ForgottenProfile' type: object required: - data title: ForgetResponse ForgetSourceResponse: properties: data: $ref: '#/components/schemas/ForgottenSource' type: object required: - data title: ForgetSourceResponse ForgottenProfile: properties: profile_id: type: string title: Profile Id memories_deleted: type: integer title: Memories Deleted description: 'Memories the profile held and no longer does, counted before and after. A report rather than an audit: memory moves in the background between the two counts. The status carries the outcome.' type: object required: - profile_id - memories_deleted title: ForgottenProfile ForgottenSource: properties: profile_id: type: string title: Profile Id source_id: type: string title: Source Id description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by `ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.' memories_deleted: type: integer title: Memories Deleted description: 'Memories the profile held and no longer does, counted before and after across the whole profile: it includes memories derived from this source together with others, and anything else the profile lost in between. A report rather than an audit. The status carries the outcome.' type: object required: - profile_id - source_id - memories_deleted title: ForgottenSource ForwardEmailInboxMessageRequest: type: object properties: to: $ref: '#/components/schemas/RequiredInboxActionRecipientInput' cc: $ref: '#/components/schemas/InboxActionRecipientInput' bcc: $ref: '#/components/schemas/InboxActionRecipientInput' text: type: string description: Optional plain-text note prepended to the generated forwarded-message block. Blank values are treated as omitted. html: type: string description: Optional HTML note prepended to the generated forwarded-message block. Blank values are treated as omitted. required: - to Fqdn: type: object title: Fqdn properties: id: type: string description: Identifies the resource. example: '1293384261075731499' x-format: int64 record_type: type: string description: Identifies the type of the resource. example: fqdn connection_id: type: string description: ID of the FQDN connection to which this FQDN is attached. fqdn: type: string description: FQDN represented by this resource. example: example.com port: type: integer description: Port to use when connecting to this FQDN. default: 5060 example: 5060 dns_record_type: type: string description: The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'. For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not specified, 5060 will be used. example: a created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' example: id: '1293384261075731499' record_type: fqdn connection_id: '1516447646313612565' fqdn: example.com port: 5060 dns_record_type: a created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' FqdnAuthentication: type: object title: FQDN Authentication properties: id: type: string description: Identifies the resource. example: '1293384261075731499' record_type: type: string description: Identifies the type of the resource. example: fqdn_authentication connection_id: type: string description: The ID of the FQDN connection this authentication strategy belongs to. example: '1293384261075731499' user_name: type: string description: The username for authentication. password: type: string description: The password for authentication. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected. ip_authentication_method: type: string description: The IP authentication method. enum: - token - p-charge-info fqdn_outbound_authentication: type: string description: The outbound authentication type. enum: - ip-authentication - credential-authentication webhook_url: type: string format: uri description: The webhook URL for authentication events. failover_url: type: string format: uri description: The failover webhook URL. microsoft_teams_sbc: type: boolean description: Whether the connection is a Microsoft Teams SBC. default: false txt_name: type: string description: The TXT record name for Microsoft Teams SBC DNS verification. txt_value: type: string description: The TXT record value for Microsoft Teams SBC DNS verification. txt_ttl: type: integer description: The TTL for the TXT record. FqdnConnection: type: object title: FQDN Connection required: - connection_name properties: id: type: string description: Identifies the resource. example: '1293384261075731499' x-format: int64 record_type: type: string description: Identifies the type of the resource. example: fqdn_connection active: type: boolean description: Defaults to true conversation_persistence: type: boolean description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false. anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: $ref: '#/components/schemas/ConnectionName' transport_protocol: $ref: '#/components/schemas/FqdnConnectionTransportProtocol' default_on_hold_comfort_noise_enabled: type: boolean default: true description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' microsoft_teams_sbc: type: boolean description: The connection is enabled for Microsoft Teams Direct Routing. default: false onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer that the sender and receiver negotiate T38 directly when both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call according to each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' user_name: type: string description: The username for the FQDN connection. password: type: string description: The password for the FQDN connection. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected. rtp_pass_codecs_on_stream_change: type: boolean description: Defines if codecs should be passed on stream change. adjust_dtmf_timestamp: type: boolean description: Indicates whether DTMF timestamp adjustment is enabled. ignore_dtmf_duration: type: boolean description: Indicates whether DTMF duration should be ignored. ignore_mark_bit: type: boolean description: Indicates whether the mark bit should be ignored. call_cost_enabled: type: boolean description: Indicates whether call cost calculation is enabled. noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' send_normalized_timestamps: type: boolean description: Indicates whether normalized timestamps should be sent. third_party_control_enabled: type: boolean description: Indicates whether third-party control is enabled. txt_name: type: string description: The name for the TXT record associated with the FQDN connection. txt_value: type: string description: The value for the TXT record associated with the FQDN connection. txt_ttl: type: integer description: The time to live for the TXT record associated with the FQDN connection. tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false webhook_event_url: $ref: '#/components/schemas/WebhookEventUrl' webhook_event_failover_url: $ref: '#/components/schemas/WebhookEventFailoverUrl' webhook_api_version: $ref: '#/components/schemas/WebhookApiVersion' webhook_timeout_secs: $ref: '#/components/schemas/WebhookTimeoutSecs' rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' created_at: $ref: '#/components/schemas/CreatedAt' updated_at: $ref: '#/components/schemas/UpdatedAt' inbound: $ref: '#/components/schemas/InboundFqdn' outbound: $ref: '#/components/schemas/OutboundFqdn' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: id: '1293384261075731499' record_type: fqdn_connection active: true anchorsite_override: Latency connection_name: string transport_protocol: TLS default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false tags: - tag1 - tag2 rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US sip_subdomain: string sip_subdomain_receive_settings: only_my_connections timeout_1xx_secs: 10 timeout_2xx_secs: 10 shaken_stir_enabled: true outbound: ani_override: string ani_override_type: always call_parking_enabled: true channel_limit: 10 generate_ringback_tone: true instant_ringback_enabled: true ip_authentication_method: credential-authentication ip_authentication_token: string localization: string outbound_voice_profile_id: '1293384261075731499' t38_reinvite_source: customer tech_prefix: string noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false FqdnConnectionTransportProtocol: type: string description: One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication. default: UDP enum: - UDP - TCP - TLS From: description: The phone number, in E.164 format, the fax will be sent from. type: string example: '+13125790015' FuncInvocationLog: type: object properties: record_type: type: string const: compute_func_invocation_log timestamp: type: string format: date-time method: type: string path: type: string status_code: type: integer duration_ms: type: number request_size_bytes: type: integer response_size_bytes: type: integer region: type: string FuncInvocationLogsResponse: type: object properties: meta: $ref: '#/components/schemas/LogsMeta' data: type: array items: $ref: '#/components/schemas/FuncInvocationLog' FuncLogExportConfig: type: object description: Metadata-only view of a function's log export destination. Header values are write-only (encrypted server-side) and never appear in any response. properties: record_type: type: string enum: - compute_func_log_export_config id: type: string description: Configuration record ID func_id: type: string description: Function ID this configuration belongs to endpoint: type: string format: uri description: HTTPS OTLP endpoint URL logs are pushed to enabled: type: boolean description: Whether export is enabled for this function runtime_export_enabled: type: boolean description: Whether runtime logs (function stdout/stderr) are exported invocation_export_enabled: type: boolean description: Whether invocation records (one per HTTP request) are exported created_at: type: string format: date-time updated_at: type: string format: date-time FuncLogExportConfigResponse: type: object properties: data: $ref: '#/components/schemas/FuncLogExportConfig' FuncLogExportConfigSetRequest: type: object description: 'Full-replace configuration body. All fields are required on every call: the API treats PUT as a replace (RFC 7231), so omitting any field is a 422, not "keep the current value".' required: - endpoint - headers - runtime_export_enabled - invocation_export_enabled properties: endpoint: type: string format: uri description: HTTPS URL to push logs to headers: type: object description: Headers attached to every export push, as key-value pairs (e.g. an auth token the collector expects). Required even when empty — {} means "no headers". Encrypted at rest; never returned. additionalProperties: type: string runtime_export_enabled: type: boolean description: Export runtime logs (function stdout/stderr) to this destination invocation_export_enabled: type: boolean description: Export invocation records (one per HTTP request) to this destination FuncRuntimeLog: type: object properties: record_type: type: string const: compute_func_runtime_log timestamp: type: string format: date-time level: type: string message: type: string FuncRuntimeLogsResponse: type: object properties: meta: $ref: '#/components/schemas/LogsMeta' data: type: array items: $ref: '#/components/schemas/FuncRuntimeLog' FunctionDefinition: properties: name: type: string description: type: string parameters: type: object additionalProperties: true type: object required: - name title: FunctionDefinition FunctionMetricAggregate: type: object properties: record_type: type: string product: type: string start_time: type: string format: date-time end_time: type: string format: date-time function_id: type: string function_name: type: string request_count: type: - number - 'null' request_success_rate: type: - number - 'null' request_client_error_rate: type: - number - 'null' request_error_rate: type: - number - 'null' request_latency_p50_ms: type: - number - 'null' request_latency_p95_ms: type: - number - 'null' request_latency_p99_ms: type: - number - 'null' request_latency_avg_ms: type: - number - 'null' cpu_used_cores_avg: type: - number - 'null' cpu_used_cores_max: type: - number - 'null' memory_used_bytes_avg: type: - number - 'null' memory_used_bytes_max: type: - number - 'null' FunctionMetricAggregateListResponse: type: object properties: meta: $ref: '#/components/schemas/functions-observability_PaginationMeta' data: type: array items: $ref: '#/components/schemas/FunctionMetricAggregate' FunctionTool: properties: type: type: string enum: - function shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true function: $ref: '#/components/schemas/FunctionDefinition' type: object required: - type - function title: FunctionTool GCSConfigurationData: type: object title: Google Cloud Storage Configuration Data properties: backend: type: string enum: - gcs description: Storage backend type credentials: $ref: '#/components/schemas/Credentials' bucket: $ref: '#/components/schemas/Bucket' required: - backend GatewayError: type: object 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 — no `ModelId` segment.\n\n\ For service_level basic, you may define the gender of the speaker (male or female)." type: string example: Telnyx.KokoroTTS.af voice_settings: description: The settings associated with the voice selected oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' - $ref: '#/components/schemas/SonioxVoiceSettings' discriminator: propertyName: type mapping: elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' aws: '#/components/schemas/AWSVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' soniox: '#/components/schemas/SonioxVoiceSettings' language: description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified. type: string enum: - arb - cmn-CN - cy-GB - da-DK - de-DE - en-AU - en-GB - en-GB-WLS - en-IN - en-US - es-ES - es-MX - es-US - fr-CA - fr-FR - hi-IN - is-IS - it-IT - ja-JP - ko-KR - nb-NO - nl-NL - pl-PL - pt-BR - pt-PT - ro-RO - ru-RU - sv-SE - tr-TR example: en-US minimum_digits: description: The minimum number of digits to fetch. This parameter has a minimum value of 1. default: 1 type: integer example: 1 format: int32 maximum_digits: description: The maximum number of digits to fetch. This parameter has a maximum value of 128. default: 128 type: integer example: 10 format: int32 maximum_tries: description: The maximum number of times that a file should be played back if there is no input from the user on the call. default: 3 type: integer example: 3 format: int32 timeout_millis: description: The number of milliseconds to wait for a DTMF response after speak ends before a replaying the sound file. default: 60000 type: integer example: 60000 format: int32 terminating_digit: description: The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. Set to an empty string to disable the terminating digit entirely, so that a digit such as `#` can be collected as input per `valid_digits`. default: '#' type: string example: '#' valid_digits: description: A list of all digits accepted as valid. default: 0123456789#* type: string example: '123' inter_digit_timeout_millis: description: The number of milliseconds to wait for input between digits. default: 5000 type: integer example: 10000 format: int32 client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: payload: say this on call invalid_payload: say this on call payload_type: text service_level: premium voice: male language: arb minimum_digits: 1 maximum_digits: 10 terminating_digit: '#' valid_digits: '123' inter_digit_timeout_millis: 10000 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 GcbChannelZone: title: Channel zone object required: - record_type - countries - id - name - channels type: object properties: record_type: type: string enum: - channel_zone example: channel_zone countries: type: array items: type: string description: List of countries (in ISO 3166-2, capitalized) members of the billing channel zone example: - BE - EL - LT - PT - BG - ES - LU - RO - CZ - FR - HU - SI - DK - HR - MT - SK - DE - IT - NL - FI - EE - CY - AT - SE - IE - LV - PL id: type: string example: 1653e6a1-4bfd-4857-97c6-6a51e1c34477 name: type: string example: Euro channel zone channels: type: integer format: int64 example: 7 created_at: type: string description: ISO 8601 formatted date of when the channel zone was created example: '2019-01-23T18:10:02.574Z' updated_at: type: string description: ISO 8601 formatted date of when the channel zone was updated example: '2019-01-23T18:10:02.574Z' GenerateSpeechRequest: type: object description: Request body for generating speech from text. properties: voice: type: string description: 'Voice identifier in the format `provider.model_id.voice_id` or `provider.voice_id`. Examples: `Telnyx.Ultra.`, `Telnyx.Bayan.Ahmed`, `Telnyx.Sukhan.urdu-professor`, `azure.en-US-AvaMultilingualNeural`, `aws.Polly.Generative.Lucia`. When provided, `provider`, `model_id`, and `voice_id` are extracted automatically and take precedence over individual parameters.' text: type: string description: The text to convert to speech. provider: type: string description: TTS provider. Required unless `voice` is provided. enum: - aws - telnyx - azure - elevenlabs - minimax - resemble - xai - humain - soniox language: type: string description: Language code (e.g. `en-US`). Usage varies by provider. text_type: type: string description: Text type. Use `ssml` for SSML-formatted input (supported by AWS and Azure). enum: - text - ssml output_type: type: string description: Determines the response format. `binary_output` returns raw audio bytes, `base64_output` returns base64-encoded audio in JSON. enum: - binary_output - base64_output default: binary_output disable_cache: type: boolean description: When `true`, bypass the audio cache and generate fresh audio. default: false voice_settings: type: object description: Provider-specific voice settings. Contents vary by provider — see provider-specific parameter objects below. additionalProperties: true aws: $ref: '#/components/schemas/AwsProviderParams' telnyx: $ref: '#/components/schemas/TelnyxProviderParams' azure: $ref: '#/components/schemas/AzureProviderParams' elevenlabs: $ref: '#/components/schemas/ElevenLabsProviderParams' minimax: $ref: '#/components/schemas/MinimaxProviderParams' resemble: $ref: '#/components/schemas/ResembleProviderParams' xai: $ref: '#/components/schemas/XAIProviderParams' humain: $ref: '#/components/schemas/HumainProviderParams' soniox: $ref: '#/components/schemas/SonioxProviderParams' 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 — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true handoff: $ref: '#/components/schemas/HandoffToolParams' type: object required: - type - handoff title: HandoffTool HandoffToolParams: properties: voice_mode: type: string enum: - unified - distinct description: With the unified voice mode all assistants share the same voice, making the handoff transparent to the user. With the distinct voice mode all assistants retain their voice configuration, providing the experience of a conference call with a team of assistants. ai_assistants: type: array description: List of possible assistants that can receive a handoff. items: type: object properties: name: type: string description: Helpful name for giving context on when to handoff to the assistant. example: Scheduling Specialist id: type: string description: The ID of the assistant to hand off to. example: assistant-1234567890abcdef required: - name - id required: - ai_assistants type: object title: HandoffToolParams HangupRequest: type: object title: Hangup Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 custom_headers: description: Custom headers to be added to the SIP BYE message. type: array example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' reason: description: 'Text for the SIP `Reason` header (RFC 3326) sent when cancelling an unanswered outbound leg. The SIP CANCEL carries `Reason: SIP;cause=200;text=""`; phones such as Poly and Yealink use it to suppress the missed-call entry for a call answered elsewhere. Has no effect on an answered leg or an inbound leg. A hangup sent before the leg''s `call.initiated` webhook still hangs up the leg, but without the `Reason` header. Must not contain `"`, `\`, control characters, or characters outside the Basic Multilingual Plane (such as emoji); invalid values are rejected with a 422.' type: string maxLength: 128 example: Call completed elsewhere example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 HangupTool: properties: type: type: string enum: - hangup hangup: $ref: '#/components/schemas/HangupToolParams' type: object required: - type - hangup title: HangupTool HangupToolParams: properties: description: type: string default: This tool is used to hang up the call. description: The description of the function that will be passed to the assistant. type: object title: HangupToolParams HostedNumber: example: record_type: messaging_hosted_number id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c phone_number: '+18665550001' status: successful type: object properties: record_type: type: string example: messaging_hosted_number id: type: string format: uuid description: Identifies the type of resource. readOnly: true phone_number: type: string x-format: +E.164 description: The messaging hosted phone number (+E.164 format) status: type: string enum: - deleted - failed - failed_activation - failed_carrier_rejected - failed_ineligible_carrier - failed_number_already_hosted - failed_number_not_found - failed_ownership_verification - failed_timeout - pending - provisioning - successful HostedNumberOrder: type: object properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. id: type: string format: uuid description: Unique identifier for the event. event_type: type: string example: messaging_hosted_numbers_orders.created enum: - messaging_hosted_numbers_orders.created - messaging_hosted_numbers_orders.updated - messaging_hosted_numbers_orders.deleted - messaging_hosted_numbers_orders.internal_transfer_detected - messaging_hosted_numbers_orders.internal_transfer_approval_requested - messaging_hosted_numbers_orders.internal_transfer_approved - messaging_hosted_numbers_orders.internal_transfer_rejected - messaging_hosted_numbers_orders.internal_transfer_auto_approved description: The type of event being delivered. Internal transfer events are only emitted for orders where the numbers are already active on another Telnyx account. occurred_at: type: string format: date-time description: ISO 8601 formatted date indicating when the event was generated. payload: $ref: '#/components/schemas/HostedNumberOrderEventPayload' example: record_type: event id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c event_type: messaging_hosted_numbers_orders.internal_transfer_approval_requested occurred_at: '2026-04-20T18:10:02.574Z' payload: order_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 order_status: pending profile_id: d0b1dabe-efdb-4bc8-9dd3-11f0d8b5f5b3 user_id: b448f9cc-a842-4784-98e9-03c1a5872950 numbers: - value: '+13125550001' status: pending decision: pending approval_deadline: 1714521600 HostedNumberOrderEvent: type: object properties: data: $ref: '#/components/schemas/HostedNumberOrder' HostedNumberOrderEventPayload: type: object description: Payload delivered with every messaging_hosted_numbers_orders.* event. `approval_deadline` and `decision` are meaningful only for `internal_transfer_*` events. properties: order_id: type: string format: uuid description: The ID of the hosted number order. order_status: type: string enum: - pending - provisioning - successful - failed - deleted - carrier_rejected - compliance_review_failed - incomplete_documentation - incorrect_billing_information - ineligible_carrier - loa_file_invalid - loa_file_successful description: Current status of the order. profile_id: type: string format: uuid description: The messaging profile associated with the order. user_id: type: string description: The organization that owns the order. numbers: type: array items: type: object properties: value: type: string x-format: +E.164 description: Phone number in +E.164 format. status: type: string enum: - deleted - failed - failed_activation - failed_carrier_rejected - failed_ineligible_carrier - failed_number_already_hosted - failed_number_not_found - failed_ownership_verification - failed_timeout - ownership_successful - pending - provisioning - successful description: Current status of this phone number within the order. decision: type: string enum: - pending - approved - rejected description: Approval decision for the internal transfer. Defaults to `pending` for non-internal-transfer events. approval_deadline: type: - integer - 'null' format: int64 description: Unix timestamp (seconds) by which the losing organization must respond before auto-approval. Populated on internal-transfer events once an approval window has been issued. HttpUrl: type: string format: uri minLength: 1 pattern: ^[Hh][Tt][Tt][Pp][Ss]?:// HumainProviderParams: type: object description: Humain provider-specific parameters. Unlike other providers, Humain has no format/sample-rate negotiation (output is always PCM16 24kHz mono) and no language parameter — language is fixed per voice. required: - voice_id properties: voice_id: type: string description: Humain voice identifier. enum: - sara-en - abdulaziz-en - sara-ar - abdulaziz-ar - nourah-ar - abdullah-ar ttfb_eagerness: type: number format: float description: Time-to-first-byte eagerness, trading synthesis latency for quality. minimum: 0.0 maximum: 1.0 Id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. ImportAssistantsRequest: properties: provider: type: string enum: - elevenlabs - vapi - retell description: The external provider to import assistants from. api_key_ref: type: string description: Integration secret pointer that refers to the API key for the external provider. This should be an identifier for an integration secret created via /v2/integration_secrets. import_ids: type: array items: type: string description: Optional list of assistant IDs to import from the external provider. If not provided, all assistants will be imported. type: object required: - provider - api_key_ref title: ImportAssistantsRequest ImportExternalVetting: title: ImportExternalVetting required: - evpId - vettingId type: object properties: evpId: title: Evpid maxLength: 10 type: string description: External vetting provider ID for the brand. vettingId: title: Vettingid type: string description: Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided by the vetting provider at time of vetting. vettingToken: title: Vettingtoken type: string description: Required by some providers for vetting record confirmation. ImportMetadata: properties: import_provider: type: string enum: - elevenlabs - vapi - retell description: Provider the assistant was imported from. import_id: type: string description: ID of the assistant in the provider's system. type: object InboundConfig: type: object required: - enabled - catch_all - mx_required properties: enabled: type: boolean catch_all: type: boolean mx_required: type: boolean InboundEmailAddress: type: object properties: email: type: string format: email name: type: string required: - email InboundFqdn: type: object title: Inbound FQDN properties: ani_number_format: type: string enum: - +E.164 - E.164 - +E.164-national - E.164-national default: E.164-national description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls. dnis_number_format: type: string enum: - +e164 - e164 - national - sip_username default: e164 codecs: type: array items: type: string description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.' default: - G722 - G711U - G711A - G729 - OPUS - H.264 default_routing_method: type: - string - 'null' enum: - sequential - round-robin - null default: sequential description: Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or null, other values are not allowed. default_primary_fqdn_id: type: - string - 'null' x-format: int64 default: null description: 'The default primary FQDN to use for the number. Only settable if the connection is of FQDN type. Value must be the ID of an FQDN set on the connection.' default_secondary_fqdn_id: type: - string - 'null' x-format: int64 default: null description: 'The default secondary FQDN to use for the number. Only settable if the connection is of FQDN type. Value must be the ID of an FQDN set on the connection.' default_tertiary_fqdn_id: type: - string - 'null' x-format: int64 default: null description: 'The default tertiary FQDN to use for the number. Only settable if the connection is of FQDN type. Value must be the ID of an FQDN set on the connection.' channel_limit: type: - integer - 'null' default: null description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. isup_headers_enabled: type: boolean default: false description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.) prack_enabled: type: boolean description: Enable PRACK messages as defined in RFC3262. default: false sip_compact_headers_enabled: type: boolean description: Defaults to true. default: true sip_region: type: string default: US description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be used. enum: - US - Europe - Australia sip_subdomain: type: - string - 'null' default: null description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric value. 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. **Required for SMS**' num_chars: type: integer description: The number of characters in the message text subject: type: - string - 'null' description: Message subject. media: type: array items: type: object properties: url: type: string format: url description: The url of the media requested to be sent. content_type: type: string description: The MIME type of the requested media. x-format: mime-type size: type: integer description: The size of the requested media. hash_sha256: type: string minLength: 32 maxLength: 32 description: The SHA256 hash of the requested media. webhook_url: type: - string - 'null' format: url description: The URL where webhooks related to this message will be sent. webhook_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. encoding: type: string description: Encoding scheme used for the message body. parts: type: integer minimum: 1 maximum: 10 description: Number of parts into which the message's body must be split. tags: type: array description: Tags associated with the resource. items: type: string cost: type: - object - 'null' properties: amount: type: string description: The amount deducted from your account. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 cost_breakdown: type: - object - 'null' properties: carrier_fee: type: object properties: amount: type: string description: The carrier fee amount. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 rate: type: object properties: amount: type: string description: The rate amount applied. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 description: Detailed breakdown of the message cost components. tcr_campaign_id: type: - string - 'null' description: The Campaign Registry (TCR) campaign ID associated with the message. tcr_campaign_billable: type: boolean description: Indicates whether the TCR campaign is billable. tcr_campaign_registered: type: - string - 'null' description: The registration status of the TCR campaign. example: REGISTERED received_at: type: string format: date-time description: ISO 8601 formatted date indicating when the message request was received. sent_at: type: - string - 'null' format: date-time description: Not used for inbound messages. completed_at: type: - string - 'null' format: date-time description: Not used for inbound messages. valid_until: type: - string - 'null' description: Not used for inbound messages. format: date-time errors: type: array description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses. items: $ref: '#/components/schemas/messaging_Error' example: record_type: message direction: inbound id: 7ee4241c-f127-47e5-9c34-3aac291f8058 type: SMS messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18665550001' status: delivered carrier: T-MOBILE USA, INC. line_type: Wireless to: - phone_number: '+18445550001' status: delivered carrier: TELNYX LLC line_type: VoIP cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: [] webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] InboundMessageResponse: type: object properties: data: $ref: '#/components/schemas/InboundMessage' required: - data InboundSipHeader: type: object title: Inbound SIP Header required: - name - value properties: name: description: The name of the header received from the SIP INVITE. type: string enum: - User-to-User - Diversion example: Diversion value: description: The value of the header. type: string example: example: name: Diversion value: InboundThread: type: object properties: id: type: string format: uuid record_type: type: string enum: - email_thread inbox_id: type: string format: uuid subject: type: string nullable: true preview: type: string nullable: true maxLength: 200 message_count: type: integer minimum: 1 description: Total inbound and outbound messages in the thread. unread_count: type: integer minimum: 0 description: Unread inbound messages; outbound messages never increment this count. last_message_id: type: string format: uuid last_message_at: type: string format: date-time created_at: type: string format: date-time updated_at: type: string format: date-time labels: type: array description: Mutable thread labels used for agent workflow state. Independent of the labels on the thread's messages, and distinct from the send-time `tags` on outbound messages. items: type: string maxLength: 255 maxItems: 50 required: - id - record_type - inbox_id - subject - preview - message_count - unread_count - last_message_id - last_message_at - created_at - updated_at - labels InboundThreadDetail: allOf: - $ref: '#/components/schemas/InboundThread' - type: object properties: messages: type: array items: $ref: '#/components/schemas/ThreadMessage' required: - messages InboundThreadListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/InboundThread' meta: $ref: '#/components/schemas/email_PaginationMeta' required: - data - meta InboxActionEmailAddressInput: description: Email address accepted by inbox message actions, as a string or an object with `email` and optional `name`. oneOf: - type: string minLength: 3 pattern: ^[^\s@]+@[^\s@]+\.[^\s@]+$ - type: object properties: email: type: string minLength: 3 pattern: ^[^\s@]+@[^\s@]+\.[^\s@]+$ name: type: string required: - email InboxActionRecipientInput: description: One recipient or a recipient array. Each recipient may be an email string or an object with `email` and optional `name`. oneOf: - $ref: '#/components/schemas/InboxActionEmailAddressInput' - type: array items: $ref: '#/components/schemas/InboxActionEmailAddressInput' InboxFilterEntry: type: string description: 'An exact sender address (`user@example.com`) or domain wildcard (`@example.com`). Values are trimmed and normalized to lowercase. ' example: '@example.com' InboxFilterEntryList: type: array maxItems: 500 items: $ref: '#/components/schemas/InboxFilterEntry' InboxFilters: type: object properties: record_type: type: string enum: - email_inbox_filters allowlist: $ref: '#/components/schemas/InboxFilterEntryList' blocklist: $ref: '#/components/schemas/InboxFilterEntryList' required: - record_type - allowlist - blocklist InboxFiltersResponse: type: object properties: data: $ref: '#/components/schemas/InboxFilters' required: - data InexplicitNumberOrderRequest: type: object properties: ordering_groups: type: array description: Group(s) of numbers to order. You can have multiple ordering_groups objects added to a single request. items: type: object properties: country_iso: type: string description: 'Country where you would like to purchase phone numbers. Allowable values: US, CA' enum: - US - CA count_requested: type: string description: Quantity of phone numbers to order phone_number_type: type: string description: Number type (local, toll-free, etc.) national_destination_code: type: string description: Filter by area code phone_number: type: object description: Phone number search criteria properties: starts_with: type: string description: Filter by the starting digits of the phone number ends_with: type: string description: Filter by the ending digits of the phone number contains: type: string description: Filter for phone numbers that contain the digits specified administrative_area: type: string description: Filter for phone numbers in a given state / province locality: type: string description: Filter for phone numbers in a given city / region / rate center features: type: array description: Filter for phone numbers that have the features to satisfy your use case (e.g., ["voice"]) items: type: string strategy: type: string description: 'Ordering strategy. Define what action should be taken if we don''t have enough phone numbers to fulfill your request. Allowable values are: always = proceed with ordering phone numbers, regardless of current inventory levels; never = do not place any orders unless there are enough phone numbers to satisfy the request. If not specified, the always strategy will be enforced.' enum: - always - never default: always quickship: type: boolean description: Filter to exclude phone numbers that need additional time after to purchase to activate. Only applicable for +1 toll_free numbers. exclude_held_numbers: type: boolean description: Filter to exclude phone numbers that are currently on hold/reserved for your account. required: - country_iso - count_requested - phone_number_type connection_id: type: string description: Connection id to apply to phone numbers that are purchased messaging_profile_id: type: string description: Messaging profile id to apply to phone numbers that are purchased customer_reference: type: string description: Reference label for the customer billing_group_id: type: string description: Billing group id to apply to phone numbers that are purchased required: - ordering_groups InexplicitNumberOrderResponse: type: object properties: id: type: string description: Unique identifier for the inexplicit number order connection_id: type: string description: Connection id to apply to phone numbers that are purchased messaging_profile_id: type: string description: Messaging profile id to apply to phone numbers that are purchased customer_reference: type: string description: Reference label for the customer billing_group_id: type: string description: Billing group id to apply to phone numbers that are purchased ordering_groups: type: array items: type: object properties: country_iso: type: string description: Country where you would like to purchase phone numbers phone_number_type: type: string description: Number type count_requested: type: integer description: Quantity of phone numbers requested count_allocated: type: integer description: Quantity of phone numbers allocated status: type: string description: Status of the ordering group enum: - pending - processing - failed - success - partial_success national_destination_code: type: string description: Filter by area code phone_number[starts_with]: type: string description: Filter by the starting digits of the phone number phone_number[ends_with]: type: string description: Filter by the ending digits of the phone number phone_number[contains]: type: string description: Filter for phone numbers that contain the digits specified administrative_area: type: string description: Filter for phone numbers in a given state / province strategy: type: string description: Ordering strategy used enum: - always - never quickship: type: boolean description: Filter to exclude phone numbers that need additional time after to purchase to activate. Only applicable for +1 toll_free numbers. exclude_held_numbers: type: boolean description: Filter to exclude phone numbers that are currently on hold/reserved for your account. error_reason: type: string description: Error reason if applicable orders: type: array description: Array of orders created to fulfill the inexplicit order items: type: object properties: number_order_id: type: string format: uuid description: ID of the main number order sub_number_order_ids: type: array items: type: string format: uuid description: Array of sub number order IDs required: - number_order_id - sub_number_order_ids created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the ordering group was created updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the ordering group was updated created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated InferenceEmbeddingTransferToolParams: properties: targets: oneOf: - type: array items: type: object properties: name: type: string description: The name of the target. example: Support to: type: string description: The destination number or SIP URI of the call. example: '+13129457420' message: type: string description: The warm transfer message to deliver to this specific target. When set, it takes precedence over the message the assistant composes from `warm_transfer_instructions`. example: I have a caller asking about a billing issue on invoice 4471. extension: type: string description: 'DTMF digits to send automatically after the transfer destination answers. Useful for reaching an extension behind an IVR (e.g. `"200"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`, `A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent.' example: wwww200 sip_auth_username: type: string description: SIP Authentication username used for SIP challenges. Applies when `to` is a SIP URI. example: sipuser sip_auth_password: type: string description: SIP Authentication password used for SIP challenges. Applies when `to` is a SIP URI. example: sippass required: - to - type: string description: A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. example: '{{ targets }}' description: The different possible targets of the transfer. The assistant will be able to choose one of the targets to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. diversion: type: string example: '{{telnyx_agent_target}}' description: 'The number the inbound call was received on, forwarded so an unverified non-Telnyx `from` can be used as the caller id -- typically to transfer out as the original caller by pairing `from: "{{telnyx_end_user_target}}"` with `diversion: "{{telnyx_agent_target}}"`. The caller id is only accepted while that number is still on an active inbound call to this `diversion` number, and the `diversion` number must be one you own or have verified.' warm_transfer_instructions: type: string example: Briefly greet the transfer recipient and provide any relevant information from the call. Let them know you will bridge the call right after. description: Natural language instructions for your agent for how to provide context for the transfer recipient. warm_transfer_acceptance: type: object description: 'Requires the transfer destination to accept the call before the caller is bridged. When enabled, the assistant speaks privately with the destination after they answer — delivering the warm transfer message and asking whether they take the call — while the caller keeps hearing ringback. The assistant then finalizes the transfer with the built-in `complete_transfer` tool: an accept bridges the calls, a decline hangs up the destination and returns the assistant to the caller with the reason the destination gave. Requires either `warm_transfer_instructions` or a `message` on every target, otherwise the assistant fails to save. Only available for calls started with `ai_assistant_start`; single-caller conversations only (a conference or additional invited participants fall back to a regular warm transfer).' properties: enabled: type: boolean default: false description: Whether the destination must accept the transfer before the calls are bridged. end_user_target_context_mode: type: string enum: - private - shared default: private description: Controls whether the private exchange between the assistant and the transfer destination is kept out of the conversation. With `private` (default) the exchange never reaches the conversation history, AI conversations, webhooks or insights, and the transfer tool result is rewritten with the outcome only. With `shared` the exchange stays in the conversation like any other messages. require_acceptance: type: boolean default: false description: 'Fail closed when the acceptance consult cannot run. Off by default: if the consult cannot be set up for any reason — including where acceptance is unavailable at all (`gather_using_ai`, Conversation Relay or web calls, a conference, or additional invited participants) — the transfer degrades to a plain warm transfer (the warm transfer message is played to the destination as audio and the calls are bridged anyway). Set to true to treat those paths as a decline instead: the destination is disconnected without being asked, the assistant returns to the caller, and no bridge happens without an acceptance. Only consult-setup failures are affected; the destination must still explicitly accept on every consult that does run.' timeout_secs: type: integer minimum: 10 maximum: 600 default: 60 description: How long, in seconds, the destination has to accept the transfer, counted from when the private consult starts (right after the destination answers, or after `warm_message_delay_ms`). The caller keeps hearing ringback the whole time. If no acceptance arrives in time, the destination is hung up and the assistant returns to the caller (the transfer fails as a timeout). Raise it for destinations that answer before a human is on the line, such as a call-center queue/ACD or an IVR playing hold audio; keep it as short as practical, since the caller waits on ringback until it expires. description: type: string description: A description of the transfer tool. By default, Telnyx generates this automatically based on the configured targets. Typically only set when importing an assistant from another provider that allowed a custom description; in that case the provided value is preserved. Most users should leave this empty and let Telnyx manage it. example: Transfer the call to a human agent. bridge_beep: type: object description: Plays a short beep once the transfer completes and the calls are bridged, so the transfer destination knows the caller is now on the line. The warm transfer message plays before the bridge; this marks the moment the caller actually joins. Works with and without `warm_transfer_acceptance`. properties: enabled: type: boolean default: false description: Whether to play the beep when the calls are bridged. target_legs: type: string enum: - self - both default: self description: Who hears the beep. `self` plays it to the transfer destination only; `both` plays it to the destination and the original caller. warm_message_delay_ms: type: - integer - 'null' example: 2000 description: Optional delay in milliseconds before playing the warm message audio when the transferred call is answered. When set, the audio_url is not included in the dial command; instead, playback starts after the specified delay. When not set, existing behavior (audio_url in dial) is preserved. custom_headers: description: Custom headers to be added to the SIP INVITE for the transfer command. type: array items: type: object properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string voicemail_detection: type: object description: Configuration for voicemail detection (AMD - Answering Machine Detection) on the transferred call. Allows the assistant to detect when a voicemail system answers the transferred call and take appropriate action. properties: detection_mode: type: string enum: - disabled - premium description: The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled' turns off AMD detection. on_voicemail_detected: type: object description: Action to take when voicemail is detected on the transferred call. properties: action: type: string enum: - stop_transfer - leave_message_and_stop_transfer description: The action to take when voicemail is detected. 'stop_transfer' hangs up immediately. 'leave_message_and_stop_transfer' leaves a message then hangs up. voicemail_message: type: object description: Configuration for the voicemail message to leave. Only applicable when action is 'leave_message_and_stop_transfer'. properties: type: type: string enum: - message - warm_transfer_instructions description: The type of voicemail message. Use 'message' to leave a specific TTS message, or 'warm_transfer_instructions' to play the warm transfer audio. message: type: string description: The specific message to leave as voicemail (converted to speech). Only applicable when type is 'message'. detection_config: type: object description: Advanced AMD detection configuration parameters. All values are optional - Telnyx will use defaults if not specified. properties: greeting_silence_duration_millis: type: integer minimum: 500 maximum: 50000 description: Duration of silence after the greeting to wait before considering the greeting complete. greeting_total_analysis_time_millis: type: integer minimum: 500 maximum: 300000 description: Maximum time to spend analyzing the greeting. after_greeting_silence_millis: type: integer minimum: 100 maximum: 5000 description: Duration of silence after greeting detection before finalizing the result. between_words_silence_millis: type: integer minimum: 10 maximum: 5000 description: Maximum silence duration between words during greeting. greeting_duration_millis: type: integer minimum: 100 maximum: 10000 description: Expected duration of greeting speech. initial_silence_millis: type: integer minimum: 100 maximum: 500000 description: Maximum silence duration at the start of the call before speech. maximum_number_of_words: type: integer minimum: 1 maximum: 50 description: Maximum number of words expected in a human greeting. maximum_word_length_millis: type: integer minimum: 50 maximum: 5000 description: Maximum duration of a single word. silence_threshold: type: integer minimum: 1 maximum: 1000 description: Audio level threshold for silence detection. total_analysis_time_millis: type: integer minimum: 500 maximum: 60000 description: Total time allowed for AMD analysis. min_word_length_millis: type: integer minimum: 1 maximum: 1000 description: Minimum duration for audio to be considered a word. type: object required: - targets - from title: TransferToolParams InfringementClaim: type: object properties: id: type: string format: uuid example: e379fbc8-cd83-4bef-a280-a0ac9d00dcf8 readOnly: true dir_id: type: string format: uuid example: 42a3f554-7ce3-44c2-bfe9-6e1afe0d7991 enterprise_id: type: string format: uuid example: 7eca8226-8081-4e11-abdc-437b5f53a81f claim_type: $ref: '#/components/schemas/InfringementClaimType' claim_description: type: string minLength: 10 maxLength: 2000 example: Alleged infringement on trademark XYZ. claimant_name: type: string minLength: 1 maxLength: 255 example: Test Claimant LLC claimant_contact: type: string minLength: 1 maxLength: 255 example: legal@testclaimant.example.com claim_date: type: string format: date-time description: When the claim was filed (set by the claimant's representative at file time). example: '2026-04-22T02:12:54Z' readOnly: true status: $ref: '#/components/schemas/InfringementClaimStatus' resolution: type: string nullable: true enum: - upheld - rejected - modified description: Set only when `status` is `resolved`. resolution_date: type: string format: date-time nullable: true readOnly: true resolution_notes: type: string nullable: true maxLength: 2000 readOnly: true contest_documents: type: array items: $ref: '#/components/schemas/Document' description: Aggregated across all customer contest submissions on this claim. contest_history: type: array items: $ref: '#/components/schemas/ContestSubmission' description: Per-round submission audit trail. Each entry records one `POST /infringement_claims/{id}/contest` call (notes, timestamp, document count). Aggregated documents live on `contest_documents`. readOnly: true dir: $ref: '#/components/schemas/InfringementClaimDirRef' created_at: type: string format: date-time example: '2026-04-22T02:12:55.908411Z' readOnly: true updated_at: type: string format: date-time example: '2026-04-22T02:12:55.908417Z' readOnly: true InfringementClaimContest: type: object required: - contest_notes additionalProperties: false properties: contest_notes: type: string minLength: 10 maxLength: 2000 description: Customer's response to the claim. 10–2000 characters. example: We own the trademark outright; our registration precedes the claimant by three years. documents: type: array items: $ref: '#/components/schemas/Document' maxItems: 20 description: Up to 20 supporting documents per submission. `document_id` must be unique within this submission. Documents are aggregated into the claim's `contest_documents` across all submissions. InfringementClaimDirRef: type: object description: Snapshot of the DIR the claim is filed against, embedded for convenience. properties: id: type: string format: uuid example: 42a3f554-7ce3-44c2-bfe9-6e1afe0d7991 readOnly: true display_name: type: string example: Acme Plumbing enterprise_id: type: string format: uuid example: 7eca8226-8081-4e11-abdc-437b5f53a81f status: $ref: '#/components/schemas/DirStatus' InfringementClaimList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/InfringementClaim' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' InfringementClaimStatus: type: string enum: - pending - contested - resolved description: Lifecycle status. `pending` - newly filed; the DIR is auto-suspended. `contested` - you have submitted contest evidence; awaiting Telnyx review. `resolved` - final. InfringementClaimType: type: string enum: - trademark - copyright description: Category of infringement being claimed. InfringementClaimWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/InfringementClaim' IngestPayload: title: Payload description: 'The session''s messages, in whatever shape your framework produces. Any JSON value but null is accepted and stored whole, as long as it holds something to remember: a body with no content anywhere in it -- `{}`, `[]`, `""`, `{"messages": []}` -- is a 422.' anyOf: - type: object additionalProperties: true - type: - array - string - number - boolean IngestResponse: properties: data: $ref: '#/components/schemas/AcceptedIngest' type: object required: - data title: IngestResponse InitiateAICallRequest: type: object title: Initiate AI Call Request required: - From - To - AIAssistantId properties: From: description: The phone number of the party initiating the call. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string To: description: The phone number of the called party. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string AIAssistantId: description: The ID of the AI assistant to use for the call. Telnyx attempts to warm up this assistant before the call is placed and starts it automatically when the called party answers. type: string AIAssistantVersion: description: The version of the AI assistant to use. type: string AIAssistantDynamicVariables: description: Key-value map of dynamic variables to pass to the AI assistant. type: object additionalProperties: type: string example: customer_name: John Doe account_id: '12345' CallerId: description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If omitted, the display name will be the same as the number in the `From` field. example: Info type: string StatusCallback: description: URL destination for Telnyx to send status callback events for this AI call. When provided, this per-call value overrides the status callback URL configured on the TeXML application/connection. example: https://www.example.com/callback type: string StatusCallbackEvent: description: 'The status callback events for which Telnyx should send a webhook for this AI call. Multiple events can be defined when separated by a space. Valid values: initiated, ringing, answered, completed, no-answer, busy, canceled, failed, analyzed. When provided, this per-call value overrides the status callback events configured on the TeXML application/connection.' example: initiated answered default: completed type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback` and `StatusCallbacks` for this AI call. When provided, this per-call value overrides the status callback method configured on the TeXML application/connection. example: GET default: POST type: string enum: - GET - POST StatusCallbacks: description: Array of URL destinations for Telnyx to send status callback events for this AI call. When provided, these per-call values override the status callback URL configured on the TeXML application/connection. type: array items: type: string example: - https://www.example.com/callback1 - https://www.example.com/callback2 CustomHeaders: description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties. type: array items: type: object properties: name: type: string description: The name of the custom header value: type: string description: The value of the custom header required: - name - value example: - name: X-Custom-Header value: custom-value ConversationCallback: description: URL destination for Telnyx to send AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`. example: https://www.example.com/conversation-callback type: string ConversationCallbackMethod: description: HTTP request type used for `ConversationCallback` and `ConversationCallbacks`. example: GET default: POST type: string enum: - GET - POST ConversationCallbacks: description: Array of URL destinations for AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`. type: array items: type: string example: - https://www.example.com/conversation-callback1 - https://www.example.com/conversation-callback2 MachineDetection: description: Enables Answering Machine Detection. example: Enable default: Disable type: string enum: - Enable - Disable - DetectMessageEnd DetectionMode: description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection example: Premium default: Regular type: string enum: - Premium - Regular - PremiumCallScreening AsyncAmd: description: Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed. example: true default: false type: boolean AsyncAmdStatusCallback: description: URL destination for Telnyx to send AMD callback events to for the call. example: https://www.example.com/callback type: string AsyncAmdStatusCallbackMethod: description: HTTP request type used for `AsyncAmdStatusCallback`. example: GET default: POST type: string enum: - GET - POST MachineDetectionTimeout: description: Maximum timeout threshold in milliseconds for overall detection. example: 5000 default: 30000 maximum: 60000 minimum: 500 type: integer MachineDetectionPromptEndTimeout: description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds. Used when `DetectionMode` is `PremiumCallScreening`. example: 5000 minimum: 1000 maximum: 120000 type: integer MachineDetectionSpeechThreshold: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used. example: 2000 default: 3500 type: integer MachineDetectionSpeechEndThreshold: description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used. example: 2000 default: 800 type: integer MachineDetectionSilenceTimeout: description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used. example: 2000 default: 3500 type: integer MachineDetectionBeepProfile: description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile. Only used when MachineDetection is enabled. example: freq_only default: both type: string enum: - both - freq_only MachineDetectionBeepMinFrequency: description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when MachineDetection is enabled. type: integer example: 550 format: int32 minimum: 200 maximum: 4000 MachineDetectionBeepMaxFrequency: description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection is enabled. type: integer example: 2000 format: int32 minimum: 200 maximum: 4000 MachineDetectionBeepMinToneDuration: description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when MachineDetection is enabled. type: integer example: 300 format: int32 minimum: 50 maximum: 5000 MachineDetectionBeepSpectralConfirmation: description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when MachineDetection is enabled. type: boolean example: true MachineDetectionBeepSpectralWindow: description: Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled. type: integer example: 100 format: int32 minimum: 20 maximum: 1000 MachineDetectionBeepSpectralMinPurity: description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled. type: number example: 0.8 minimum: 0 maximum: 1 MachineDetectionBeepSpectralRejectFaxCng: description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection is enabled. type: boolean example: true Passports: description: A string of passport identifiers to associate with the call. type: string TimeLimit: description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds. example: 3600 type: integer minimum: 30 maximum: 14400 default: 14400 Timeout: description: The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds. example: 60 type: integer minimum: 5 maximum: 120 default: 30 x-stainless-param: timeout_seconds Record: description: Whether to record the entire participant's call leg. Defaults to `false`. example: false type: boolean RecordingChannels: description: The number of channels in the final recording. Defaults to `mono`. example: dual type: string enum: - mono - dual RecordingStatusCallback: description: The URL the recording callbacks will be sent to. example: https://example.com/recording_status_callback type: string RecordingStatusCallbackMethod: description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST RecordingStatusCallbackEvent: description: 'The changes to the recording''s state that should generate a call to `RecordingStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.' example: in-progress completed absent type: string RecordingTimeout: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. The minimum value is 0. The default value is 0 (infinite). example: 5 type: integer default: 0 RecordingTrack: description: The audio track to record for the call. The default is `both`. example: inbound type: string enum: - inbound - outbound - both Trim: description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim SendRecordingUrl: $ref: '#/components/schemas/SendRecordingUrl' PreferredCodecs: description: The list of comma-separated codecs to be offered on a call. example: PCMA,PCMU type: string SipAuthUsername: description: The username to use for SIP authentication. example: user type: string SipAuthPassword: description: The password to use for SIP authentication. example: '1234' type: string SipRegion: description: Defines the SIP region to be used for the call. type: string default: US enum: - US - Europe - Canada - Australia - Middle East example: Canada example: From: '+13120001234' To: '+13121230000' AIAssistantId: ai-assistant-id-123 InitiateAICallResult: type: object title: Initiate AI Call Result example: from: '+13120001234' to: '+13121230000' status: queued call_sid: v3:example-call-sid properties: from: type: string example: '+13120001234' to: type: string example: '+13120000000' status: type: string example: queued call_sid: type: string example: v3:example-call-sid InitiateCallRequest: type: object title: Initiate Call Request required: - To - From - ApplicationSid properties: ApplicationSid: description: The ID of the TeXML Application that will handle the call, for example `1293384261075731499`. The `ApplicationSid` name is kept for Twilio API compatibility, but the value is the numeric ID of one of your TeXML Applications (see the TeXML Applications API or the Mission Control Portal), not a Twilio `AP...` SID. If `Url` and `Texml` are omitted, Telnyx fetches instructions from the XML Request URL configured on this application. type: string example: '1293384261075731499' To: description: The phone number of the called party. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string From: description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string CallerId: description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If ommited, the display name will be the same as the number in the `From` field. example: Info type: string Url: description: The URL from which Telnyx will retrieve the TeXML call instructions. example: https://www.example.com/instructions.xml type: string UrlMethod: description: HTTP request type used for `Url`. The default value is inherited from TeXML Application setting. example: GET default: POST type: string enum: - GET - POST FallbackUrl: description: A failover URL for which Telnyx will retrieve the TeXML call instructions if the `Url` is not responding. example: https://www.example.com/instructions-fallback.xml type: string StatusCallback: description: URL destination for Telnyx to send status callback events to for the call. example: https://www.example.com/callback type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback`. example: GET default: POST type: string enum: - GET - POST StatusCallbackEvent: description: The call events for which Telnyx should send a webhook. Multiple events can be defined when separated by a space. example: initiated answered default: completed type: string MachineDetection: description: Enables Answering Machine Detection. example: Enable default: Disable type: string enum: - Enable - Disable - DetectMessageEnd DetectionMode: description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection example: Premium default: Regular type: string enum: - Premium - Regular - PremiumCallScreening AsyncAmd: description: Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed. example: true default: false type: boolean AsyncAmdStatusCallback: description: URL destination for Telnyx to send AMD callback events to for the call. example: https://www.example.com/callback type: string AsyncAmdStatusCallbackMethod: description: HTTP request type used for `AsyncAmdStatusCallback`. The default value is inherited from TeXML Application setting. example: GET default: POST type: string enum: - GET - POST MachineDetectionTimeout: description: Maximum timeout threshold in milliseconds for overall detection. example: 5000 default: 30000 maximum: 60000 minimum: 500 type: integer MachineDetectionPromptEndTimeout: description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds. Used when `DetectionMode` is `PremiumCallScreening`. example: 5000 minimum: 1000 maximum: 120000 type: integer MachineDetectionSpeechThreshold: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used. example: 2000 default: 3500 type: integer MachineDetectionSpeechEndThreshold: description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used. example: 2000 default: 800 type: integer MachineDetectionSilenceTimeout: description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used. example: 2000 default: 3500 type: integer MachineDetectionBeepProfile: description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile. Only used when MachineDetection is enabled. example: freq_only default: both type: string enum: - both - freq_only MachineDetectionBeepMinFrequency: description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when MachineDetection is enabled. type: integer example: 550 format: int32 minimum: 200 maximum: 4000 MachineDetectionBeepMaxFrequency: description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection is enabled. type: integer example: 2000 format: int32 minimum: 200 maximum: 4000 MachineDetectionBeepMinToneDuration: description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when MachineDetection is enabled. type: integer example: 300 format: int32 minimum: 50 maximum: 5000 MachineDetectionBeepSpectralConfirmation: description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when MachineDetection is enabled. type: boolean example: true MachineDetectionBeepSpectralWindow: description: Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled. type: integer example: 100 format: int32 minimum: 20 maximum: 1000 MachineDetectionBeepSpectralMinPurity: description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled. type: number example: 0.8 minimum: 0 maximum: 1 MachineDetectionBeepSpectralRejectFaxCng: description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection is enabled. type: boolean example: true CancelPlaybackOnMachineDetection: description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`. default: true example: false type: boolean CancelPlaybackOnDetectMessageEnd: description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`. default: true example: false type: boolean DeepfakeDetection: description: Enables Deepfake Detection on the dialed call. When enabled, audio from the remote party is analyzed to determine whether the voice is AI-generated. Results are delivered asynchronously via a callback. example: Enable type: string enum: - Enable DeepfakeDetectionCallbackUrl: description: URL destination for Telnyx to send deepfake detection callback events to for the call. example: https://www.example.com/deepfake-callback type: string DeepfakeDetectionCallbackMethod: description: HTTP request type used for `DeepfakeDetectionCallbackUrl`. example: GET default: POST type: string enum: - GET - POST PreferredCodecs: description: The list of comma-separated codecs to be offered on a call. example: PCMA,PCMU type: string Record: description: Whether to record the entire participant's call leg. Defaults to `false`. example: false type: boolean RecordingChannels: description: The number of channels in the final recording. Defaults to `mono`. example: dual type: string enum: - mono - dual RecordingStatusCallback: description: The URL the recording callbacks will be sent to. example: https://example.com/recording_status_callback type: string RecordingStatusCallbackMethod: description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST RecordingStatusCallbackEvent: description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.' example: in-progress completed absent type: string RecordingTimeout: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. Please note that the transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite) example: 5 type: integer default: 0 RecordingTrack: description: The audio track to record for the call. The default is `both`. example: inbound type: string enum: - inbound - outbound - both SendRecordingUrl: $ref: '#/components/schemas/SendRecordingUrl' SipAuthPassword: description: The password to use for SIP authentication. example: '1234' type: string SipAuthUsername: description: The username to use for SIP authentication. example: user type: string Trim: description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim CustomHeaders: description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties. type: array items: type: object properties: name: type: string description: The name of the custom header value: type: string description: The value of the custom header required: - name - value example: - name: X-Custom-Header value: custom-value SipRegion: description: Defines the SIP region to be used for the call. type: string default: US enum: - US - Europe - Canada - Australia - Middle East example: Canada MediaEncryption: description: Defines whether media should be encrypted on the call. When set to `SRTP`, the call will use Secure Real-time Transport Protocol for media encryption. When set to `DTLS`, the call will use DTLS for media encryption. Only supported for SIP destinations. example: disabled default: disabled type: string enum: - disabled - SRTP - DTLS SuperviseCallSid: description: The call control ID of the existing call to supervise. When provided, the created leg will be added to the specified call in supervising mode. Status callbacks and action callbacks will NOT be sent for the supervising leg. example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg type: string SupervisingRole: description: 'The supervising role for the new leg. Determines the audio behavior: barge (hear both sides), whisper (only hear supervisor), monitor (hear both sides but supervisor muted). Default: barge' example: monitor type: string enum: - barge - whisper - monitor default: barge Timeout: description: The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds. example: 60 type: integer minimum: 5 maximum: 120 default: 30 x-stainless-param: timeout_seconds TimeLimit: description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds. example: 3600 type: integer minimum: 30 maximum: 14400 default: 14400 Texml: description: TeXML to be used as instructions for the call. If provided, the call will execute these instructions instead of fetching from the Url. example: Hello type: string oneOf: - title: With URL required: - Url properties: Texml: not: {} - title: With TeXML required: - Texml properties: Url: not: {} - title: Application Default properties: Url: not: {} Texml: not: {} example: To: '+13121230000' From: '+13120001234' Url: https://www.example.com/texml.xml StatusCallback: https://www.example.com/statuscallback-listener ApplicationSid: '1293384261075731499' InitiateCallResult: type: object title: Initaite TeXML Call Result example: from: '+13120001234' to: '+13121230000' status: queued properties: from: type: string example: '+13120001234' to: type: string example: '+13120000000' status: type: string example: accepted InsightSettings: properties: insight_group_id: type: string description: Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations. type: object InsightTemplateCreateReq: properties: instructions: type: string title: Instructions name: type: string title: Name webhook: type: string title: Webhook default: '' json_schema: anyOf: - type: string - type: object title: JsonSchemaObject title: Json Schema description: If specified, the output will follow the JSON schema. type: object required: - instructions - name title: InsightTemplateCreateReq InsightTemplateDetailRespData: properties: data: $ref: '#/components/schemas/InsightTemplateResp' type: object required: - data title: InsightTemplateDetailRespData InsightTemplateGroupCreateReq: properties: name: type: string title: Name description: type: string title: Description webhook: type: string title: Webhook default: '' type: object required: - name title: InsightTemplateGroupCreateReq InsightTemplateGroupDetailRespData: properties: data: $ref: '#/components/schemas/InsightTemplateGroupResp' type: object required: - data title: InsightTemplateGroupDetailRespData InsightTemplateGroupResp: properties: id: type: string format: uuid title: Id name: type: string title: Name description: type: string title: Description created_at: type: string format: date-time title: Created At insights: items: $ref: '#/components/schemas/InsightTemplateResp' type: array title: Insights webhook: type: string title: Webhook default: '' type: object required: - id - name - created_at title: InsightTemplateGroupResp InsightTemplateGroupUpdateReq: properties: name: type: string title: Name description: type: string title: Description webhook: type: string title: Webhook type: object title: InsightTemplateGroupUpdateReq InsightTemplateResp: properties: id: type: string format: uuid title: Id instructions: type: string title: Instructions created_at: type: string format: date-time title: Created At insight_type: $ref: '#/components/schemas/TemplateType' default: custom name: type: string title: Name default: '' webhook: type: string title: Webhook default: '' json_schema: anyOf: - type: string - type: object title: JsonSchemaObject title: Json Schema description: If specified, the output will follow the JSON schema. type: object required: - id - instructions - created_at title: InsightTemplateResp InsightTemplateUpdateReq: properties: instructions: type: string title: Instructions name: type: string title: Name webhook: type: string title: Webhook json_schema: anyOf: - type: string - type: object title: JsonSchemaObject title: Json Schema type: object title: InsightTemplateUpdateReq IntId: title: Int ID type: string description: Uniquely identifies the resource. example: '1293384261075731499' Integration: type: object properties: id: type: string title: Id name: type: string title: Name display_name: type: string title: Display Name description: type: string title: Description logo_url: type: string title: Logo Url status: type: string enum: - disconnected - connected title: Status available_tools: type: array items: type: string title: Available Tools required: - id - name - display_name - description - logo_url - status - available_tools title: Integration IntegrationConnection: type: object properties: id: type: string title: Id integration_id: type: string title: Integration Id allowed_tools: type: array items: type: string title: Allowed Tools required: - id - integration_id - allowed_tools title: IntegrationConnection IntegrationConnectionResponse: type: object properties: data: $ref: '#/components/schemas/IntegrationConnection' required: - data title: IntegrationConnectionResponse IntegrationConnectionsListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/IntegrationConnection' title: Data required: - data title: IntegrationConnectionsListResponse IntegrationSecret: properties: record_type: type: string title: Record Type example: integration_secret id: type: string title: Id identifier: type: string title: Identifier created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At type: object required: - record_type - id - identifier - created_at title: IntegrationSecret IntegrationSecretCreatedResponse: properties: data: $ref: '#/components/schemas/IntegrationSecret' type: object required: - data title: IntegrationSecretCreatedResponse IntegrationSecretsListData: properties: data: items: $ref: '#/components/schemas/IntegrationSecret' type: array title: Data meta: $ref: '#/components/schemas/integration-secrets_Metadata' type: object required: - data - meta title: SecretsListData IntegrationsListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Integration' title: Data required: - data title: IntegrationsListResponse Interface: type: object properties: network_id: description: The id of the network associated with the interface. type: string format: uuid example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 name: type: string description: A user specified name for the interface. example: test interface status: $ref: '#/components/schemas/InterfaceStatus' InterfaceStatus: type: string enum: - created - provisioning - provisioned - deleting description: The current status of the interface deployment. readOnly: true example: provisioned InterruptionSettings: type: object description: Settings for handling user interruptions during assistant speech properties: enable: type: boolean description: When true, allows users to interrupt the assistant while speaking default: true IntrospectRequest: type: object properties: token: type: string description: The token to introspect required: - token IntrospectResponse: type: object properties: active: type: boolean description: Whether the token is active scope: type: string description: Space-separated list of scopes client_id: type: string description: Client identifier exp: type: integer description: Expiration timestamp iat: type: integer description: Issued at timestamp iss: type: string description: Issuer aud: type: string description: Audience required: - active InventoryCoverage: type: object properties: group: type: string example: '318' group_type: type: string example: npa number_range: type: integer example: 1 number_type: type: string enum: - did - toll-free example: did phone_number_type: type: string enum: - local - toll_free - national - landline - shared_cost - mobile example: local coverage_type: type: string enum: - number - block example: number record_type: type: string example: inventory_coverage_group administrative_area: type: string example: NJ count: type: integer example: 3 advance_requirements: type: boolean example: true description: Indicates if the phone number requires advance requirements. example: group: '318' group_type: npa number_range: 1 number_type: did phone_number_type: local coverage_type: number record_type: inventory_coverage_group administrative_area: NJ count: 3 advance_requirements: true InventoryCoverageMetadata: type: object example: total_results: 25 properties: total_results: type: integer example: 25 InviteTool: properties: type: type: string enum: - invite shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true invite: $ref: '#/components/schemas/InviteToolConfig' title: InviteToolConfig type: object required: - type - invite title: InviteTool InviteToolConfig: properties: from: type: string example: '+35319605860' description: Number or SIP URI placing the call. targets: oneOf: - type: array items: type: object properties: name: type: string description: The name of the target. example: Support to: type: string description: The destination number or SIP URI of the call. example: '+13129457420' required: - to - type: string description: A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. example: '{{ targets }}' - type: 'null' description: The different possible targets of the invite. The assistant will be able to choose one of the targets to invite to the call. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. If omitted or null, the invite tool can still be configured and targets may be supplied dynamically at runtime. custom_headers: description: Custom headers to be added to the SIP INVITE for the invite command. type: array items: type: object properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string voicemail_detection: type: object description: Configuration for voicemail detection (AMD - Answering Machine Detection) on the invited call. properties: detection_mode: type: string enum: - disabled - premium description: The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled' turns off AMD detection. on_voicemail_detected: type: object description: Action to take when voicemail is detected on the invited call. properties: action: type: string enum: - stop_invite description: The action to take when voicemail is detected. type: object required: - from title: InviteToolConfig Invoice: type: object properties: invoice_id: type: string format: uuid example: 48eff763-ea80-4345-b688-78249eb165a8 file_id: type: string format: uuid example: 454ea3b0-9eaa-4fa9-992e-6d9f31c0a37e period_start: type: string format: date example: '2023-11-01' period_end: type: string format: date example: '2023-11-30' paid: type: boolean example: true url: type: string format: uri example: https://api.telnyx.com:443/v2/invoices/48eff763-ea80-4345-b688-78249eb165a8 InvoiceDetail: type: object properties: invoice_id: type: string format: uuid example: 48eff763-ea80-4345-b688-78249eb165a8 file_id: type: string format: uuid example: 454ea3b0-9eaa-4fa9-992e-6d9f31c0a37e period_start: type: string format: date example: '2023-11-01' period_end: type: string format: date example: '2023-11-30' paid: type: boolean example: true url: type: string format: uri example: https://api.telnyx.com:443/v2/invoices/48eff763-ea80-4345-b688-78249eb165a8 download_url: type: string format: uri description: Present only if the query parameter `action=link` is set. example: https://us-east-1.telnyxstorage.com/porting-documents/telnyx/... InworldVoiceSettings: type: object title: Inworld Voice Settings properties: type: type: string enum: - inworld description: Voice settings provider type delivery_mode: type: string enum: - STABLE - BALANCED - CREATIVE description: Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies. required: - type Ip: type: object title: Ip properties: id: type: string description: Identifies the type of resource. example: '1293384261075731499' x-format: int64 record_type: type: string description: Identifies the type of the resource. example: ip connection_id: type: string description: ID of the IP Connection to which this IP should be attached. ip_address: type: string description: IP adddress represented by this resource. example: 192.168.0.0 port: type: integer description: Port to use when connecting to this IP. default: 5060 example: 5060 created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' example: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: ip connection_id: '3456789987654' ip_address: 192.168.0.0 port: 5060 created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' IpConnection: type: object title: Ip Connection properties: id: type: string description: Identifies the type of resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 x-format: int64 record_type: type: string description: Identifies the type of the resource. example: ip_connection active: type: boolean description: Defaults to true example: true conversation_persistence: type: boolean description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false. anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: type: string example: string transport_protocol: type: string description: One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication. default: UDP enum: - UDP - TCP - TLS example: UDP default_on_hold_comfort_noise_enabled: type: boolean default: true description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout. example: true bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. example: true encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. example: false ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 inbound: $ref: '#/components/schemas/InboundIp' outbound: $ref: '#/components/schemas/OutboundIp' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: ip_connection active: true anchorsite_override: Latency connection_name: string transport_protocol: TLS default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: true rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 tags: - tag1 - tag2 created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 default_primary_ip_id: 192.0.2.1 default_secondary_ip_id: 198.51.100.1 default_tertiary_ip_id: 203.0.113.1 default_routing_method: sequential channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US sip_subdomain: string sip_subdomain_receive_settings: only_my_connections timeout_1xx_secs: 10 timeout_2xx_secs: 10 shaken_stir_enabled: true outbound: call_parking_enabled: true ani_override: string ani_override_type: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: string t38_reinvite_source: customer tech_prefix: string ip_authentication_method: token ip_authentication_token: string outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false JWKSet: type: object properties: keys: type: array items: type: object properties: kty: type: string description: Key type use: type: string description: Key use alg: type: string description: Algorithm kid: type: string description: Key ID JoinConferenceRequest: required: - call_control_id type: object title: Join Conference Request properties: call_control_id: description: Unique identifier and token for controlling the call example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ== type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. Please note that the client_state will be updated for the participient call leg and the change will not affect conferencing webhooks unless the participient is the owner of the conference. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string command_id: description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string end_conference_on_exit: description: Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to "false". example: true type: boolean soft_end_conference_on_exit: description: Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to "false". example: true type: boolean hold: description: Whether the participant should be put on hold immediately after joining the conference. Defaults to "false". example: true type: boolean hold_audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played to the participant when they are put on hold after joining the conference. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when "start_conference_on_create" is set to "false". This property takes effect only if "hold" is set to "true". hold_media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played to the participant when they are put on hold after joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when "start_conference_on_create" is set to "false". This property takes effect only if "hold" is set to "true". mute: description: Whether the participant should be muted immediately after joining the conference. Defaults to "false". example: true type: boolean start_conference_on_enter: description: Whether the conference should be started after the participant joins the conference. Defaults to "false". example: true type: boolean supervisor_role: description: Sets the joining participant as a supervisor for the conference. A conference can have multiple supervisors. "barge" means the supervisor enters the conference as a normal participant. This is the same as "none". "monitor" means the supervisor is muted but can hear all participants. "whisper" means that only the specified "whisper_call_control_ids" can hear the supervisor. Defaults to "none". example: whisper type: string enum: - barge - monitor - none - whisper whisper_call_control_ids: description: Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor will join the conference as a monitoring participant only. example: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw type: array items: type: string beep_enabled: description: Whether a beep sound should be played when the participant joins and/or leaves the conference. Can be used to override the conference-level setting. enum: - always - never - on_enter - on_exit example: on_exit type: string region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 end_conference_on_exit: true hold: true hold_audio_url: http://www.example.com/audio.wav mute: true start_conference_on_enter: true supervisor_role: whisper whisper_call_control_ids: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw beep_enabled: always KvKey: type: object properties: key: type: string example: user/123 size_bytes: type: integer description: Size of the stored value in bytes. example: 21 updated_at: type: string format: date-time example: '2026-06-18T14:48:17Z' KvKeyListResponseWrapper: type: object properties: record_type: type: string example: storage_kv_key data: type: array items: $ref: '#/components/schemas/KvKey' meta: $ref: '#/components/schemas/KvListMeta' KvListMeta: type: object properties: has_more: type: boolean description: Whether more results are available on a following page. example: false cursor: type: string description: Opaque cursor for the next page; pass it back as the `cursor` query parameter. Omitted when there are no further results. KvNamespace: type: object properties: record_type: type: string example: storage_kv id: type: string format: uuid example: 550e8400-e29b-41d4-a716-446655440000 name: type: string example: my-cache status: type: string description: Provisioning status. A namespace is usable once `status` is `provision_ok`. Once deletion completes, the namespace no longer appears in the API. enum: - pending - provision_ok - provision_failed - deleting - delete_failed example: provision_ok created_at: type: string format: date-time example: '2026-06-18T14:48:17Z' updated_at: type: string format: date-time example: '2026-06-18T14:48:17Z' KvNamespaceListResponseWrapper: type: object properties: data: type: array items: $ref: '#/components/schemas/KvNamespace' meta: $ref: '#/components/schemas/edge-compute_PaginationMeta' KvNamespaceResponseWrapper: type: object properties: data: $ref: '#/components/schemas/KvNamespace' LLMCondition: description: 'Edge condition routed by the assistant''s LLM from a natural-language prompt. How the edge is decided depends on the channel. On calls, each outgoing `llm` condition is offered to the assistant''s model as a transition tool alongside the assistant''s tools, and the edge fires when the model selects it; the platform does not evaluate the prompt itself, and instructions that forbid or discourage tool calls can stop these edges from firing. On chat channels, the edge prompts are evaluated in a separate model call after the reply, which does not use the assistant''s instructions. Use this for fuzzy intents that aren''t expressible as a deterministic expression (e.g. ''user wants to escalate to a human'').' example: prompt: The user has confirmed their booking details. type: llm properties: prompt: description: Natural-language criterion the model routes on. On calls this is offered to the model as the transition tool's description; on chat channels it is judged as a statement in the post-reply evaluation call. example: The user has confirmed their booking details. title: Prompt type: string type: const: llm title: Type type: string required: - type - prompt title: LLMCondition type: object LabelMutationRequest: type: object description: Labels to add or remove. Both operations are idempotent set operations, so a retried request converges instead of failing. properties: labels: type: array description: One or more labels. Each label is a freeform, case-sensitive string of at most 255 characters; a message or thread may carry at most 50 labels. The `telnyx:` prefix is a reserved system namespace and is rejected on customer writes. items: type: string minLength: 1 maxLength: 255 minItems: 1 maxItems: 50 required: - labels LeaveConferenceRequest: required: - call_control_id type: object title: Leave Conference Request properties: call_control_id: description: Unique identifier and token for controlling the call example: f91269aa-61d1-417f-97b3-10e020e8bc47 type: string command_id: description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string beep_enabled: description: Whether a beep sound should be played when the participant leaves the conference. Can be used to override the conference-level setting. enum: - always - never - on_enter - on_exit example: on_exit type: string region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_id: c46e06d7-b78f-4b13-96b6-c576af9640ff beep_enabled: never LeaveQueueRequest: type: object title: Leave Queue Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 LedgerBillingGroupReport: type: object properties: record_type: type: string enum: - ledger_billing_group_report description: Identifies the type of the resource. example: ledger_billing_group_report id: type: string format: uuid description: Identifies the type of resource. organization_id: type: string format: uuid description: Uniquely identifies the organization that owns the resource. status: type: string description: Status of the ledger billing group report enum: - pending - complete - failed - deleted report_url: type: - string - 'null' description: External url of the ledger billing group report, if the status is complete format: uri created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: record_type: ledger_billing_group_report id: f5586561-8ff0-4291-a0ac-84fe544797bd organization_id: f5586561-8ff0-4291-a0ac-84fe544797bd report_url: https://example.com created_at: '2019-10-15T10:07:15.527Z' updated_at: '2019-10-15T10:07:15.527Z' LinkTelnyxAgentRequest: properties: telnyx_agent_id: type: string title: Telnyx Agent Id description: The Telnyx AI agent ID to link type: object required: - telnyx_agent_id title: LinkTelnyxAgentRequest Links: type: object required: - self - records properties: self: type: string description: Link to this session analysis node. records: type: string description: Link to the underlying detail records. ListDialMetricsResponse: type: object title: List Dial Metrics Response properties: data: type: array items: $ref: '#/components/schemas/DialMetric' meta: $ref: '#/components/schemas/DialMetricsListMeta' ListMeta: type: object properties: total_pages: type: integer example: 3 total_results: type: integer example: 42 page_number: type: integer example: 1 page_size: type: integer example: 20 ListPushCredentialsResponse: description: Mobile mobile push credentials properties: data: type: array items: $ref: '#/components/schemas/PushCredential' meta: $ref: '#/components/schemas/PaginationMeta' type: object ListVerificationsResponse: title: ListVerificationsResponse required: - data - meta type: object properties: data: type: array items: $ref: '#/components/schemas/Verification' meta: $ref: '#/components/schemas/verify_Meta' ListVerifiedNumbersResponse: title: ListVerifiedNumbersResponse description: A paginated list of Verified Numbers required: - data - meta type: object properties: data: type: array items: $ref: '#/components/schemas/VerifiedNumberResponse' meta: $ref: '#/components/schemas/verified-numbers_Meta' ListVerifyProfileMessageTemplateResponse: title: ListVerifyProfileMessageTemplateResponse description: A list of Verify profile message templates required: - data type: object properties: data: type: array items: $ref: '#/components/schemas/VerifyProfileMessageTemplateResponse' ListVerifyProfilesResponse: title: ListVerifyProfilesResponse description: A paginated list of Verify profiles required: - data - meta type: object properties: data: type: array items: $ref: '#/components/schemas/VerifyProfileResponse' meta: $ref: '#/components/schemas/verify_Meta' ListedMemory: properties: id: type: string title: Id text: type: string title: Text recorded_at: anyOf: - type: string - type: 'null' title: Recorded At source_id: anyOf: - type: string - type: 'null' title: Source Id description: The source this memory was extracted from. Set for a fact, which comes from exactly one source; null for a memory derived from other memories. Read it with `GET .../sources/{source_id}`. A source deleted a moment ago can still be named here, and then answers 404. type: object required: - id - text - source_id title: ListedMemory LoaSignaturePayload: type: object description: Optional signature embedded in the rendered PDF. When omitted the PDF is returned unsigned for the customer to sign and upload. required: - image_base64 properties: image_base64: type: string description: Base64-encoded signature image. signer_name: type: - string - 'null' Location: type: object title: Location properties: id: $ref: '#/components/schemas/UUID' additional_info: type: string example: 14th Floor description: type: string example: Austin Office is_default: type: boolean description: Represents whether the location is the default or not. LocationResponse: type: object properties: data: type: object properties: location_id: type: string format: uuid static_emergency_address_id: type: string format: uuid accepted_address_suggestions: type: boolean LogMessage: required: - code - title type: object properties: code: type: string example: '10015' x-format: int64 title: type: string example: Invalid attribute detail: type: string example: The value provided for the attribute is not valid. Check the value used and try again. source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer example: /attribute meta: type: object properties: telephone_number: type: string description: The telephone number the log message is associated with, if any. example: '+12345678' external_connection_id: type: string example: '1293384261075731499' description: The external connection the log message is associated with, if any. x-format: int64 ticket_id: type: string format: uuid example: 542c3bca-d247-42bc-8fe7-e01d16ecd761 description: The ticket ID for an operation that generated the log message, if any. LogsMeta: type: object properties: has_more: type: boolean partial: type: boolean Loopcount: oneOf: - type: string - type: integer MCC: type: object title: Mobile Country Code properties: code: type: string description: Mobile Country Code. example: '311' name: type: string description: The name of the country. example: United States of America required: - code - name MCPServer: type: object properties: id: type: string title: Id name: type: string title: Name type: type: string title: Type url: type: string title: Url api_key_ref: type: - string - 'null' title: Api Key Ref allowed_tools: type: - array - 'null' items: type: string title: Allowed Tools created_at: type: string format: date-time title: Created At required: - id - name - type - url - created_at title: MCPServer MCPServersListResponse: type: array items: $ref: '#/components/schemas/MCPServer' title: MCPServersListResponse MMSFallback: type: object properties: from: type: string description: Phone number in +E.164 format example: '+13125551234' subject: type: string description: Subject of the message example: Test Message media_urls: type: array description: List of media URLs items: type: string text: type: string description: Text example: Hello world! MachinePaymentAccountCredit: type: object description: An account-credit transaction settled through the Machine Payment Protocol. properties: id: type: string description: Unique identifier of the account-credit transaction. record_type: type: string enum: - machine_payment_account_credit description: Record type identifier. account_id: type: string description: Identifier of the credited Telnyx account. Derived from the authenticated user on the initial request and from the verified payment credential on a paid retry — never from the request body. amount: type: string description: Credited amount as a decimal string with two fractional digits. currency: type: string description: ISO 4217 currency code of the credited amount (currently always USD). payment_source: type: string enum: - machine_payment description: Payment source identifier distinguishing machine payments from other account-credit sources. provider: type: string nullable: true enum: - stripe - tempo - null description: Upstream payment provider that settled the payment. payment_method: type: string nullable: true enum: - stripe_spt - tempo_usdc - null description: 'Payment method used by the provider: `stripe_spt` for Stripe Shared Payment Token payments, `tempo_usdc` for Tempo USDC payments.' payment_intent_id: type: string nullable: true description: Stripe PaymentIntent identifier for Stripe settlements. Absent for Tempo settlements. receipt_reference: type: string nullable: true description: 'Provider receipt reference: the Stripe PaymentIntent identifier for Stripe settlements, or the on-chain transaction hash for Tempo settlements.' mpp_resource: type: string nullable: true description: Machine Payment Protocol resource identifier the payment credential was bound to. status: type: string nullable: true enum: - new - processing - settled - expired - invalid - null description: Status of the transaction. Successful machine payment credits are recorded as `settled`. created: type: boolean description: True when this response created a new account credit, false when an existing transaction was returned for a duplicate paid retry. created_at: type: string format: date-time description: ISO 8601 timestamp when the transaction was created. required: - id - record_type - account_id - amount - currency - payment_source MachinePaymentAccountCreditRequest: type: object required: - amount_usd properties: amount_usd: type: string description: Amount to credit in USD, as a decimal string with up to two fractional digits (by default between 5.00 and 500.00). The request body is required on the initial challenge request and remains required on a paid retry, where you re-send the identical body plus the payment credential — the credential, not the body, selects the payment, and the retried body is not re-validated. example: '10.00' MachinePaymentAccountCreditResponse: type: object properties: data: $ref: '#/components/schemas/MachinePaymentAccountCredit' MachinePaymentSuspendedAccountFailure: type: object description: Legacy failure envelope returned when the account is suspended. properties: success: type: boolean description: Always false for a failure response. message: type: string description: Human-readable reason the request failed. reasons: type: array items: type: string description: Additional machine-readable reasons for the failure. required: - success - message - reasons MachinePaymentUpstreamError: type: object description: Error envelope proxied verbatim from the upstream machine payment service. Unlike the standard Telnyx `errors` array, it carries a single top-level `error` message. required: - error properties: error: type: string description: Upstream error message. example: Invalid Payment authorization credential ManagedAccount: type: object title: ManagedAccount required: - record_type - id - email - api_key - api_user - api_token - manager_account_id - created_at - updated_at properties: record_type: type: string example: managed_account enum: - managed_account description: Identifies the type of the resource. id: type: string format: uuid description: Uniquely identifies the managed account. example: f65ceda4-6522-4ad6-aede-98de83385123 email: type: string format: email description: The managed account's email. example: user@example.com api_key: type: string description: The managed account's V2 API access key example: KEY01236170692E74656C6E79782E636F6D_YmlnIGlyb24gaXMgZGVhZA api_user: type: string description: The manager account's email, which serves as the V1 API user identifier example: managed_account@example.com api_token: type: string description: The managed account's V1 API token example: x6oexQNHTs-fZ7-QsDMOeg organization_name: type: string description: The organization the managed account is associated with. example: Example Company LLC manager_account_id: type: string description: The ID of the manager account associated with the managed account. example: f65ceda4-6522-4ad6-aede-98de83385123 balance: $ref: '#/components/schemas/ManagedAccountBalance' created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' managed_account_allow_custom_pricing: type: boolean description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not. If false, uses the pricing of the manager account. Defaults to false. There may be time lag between when the value is changed and pricing changes take effect. example: true rollup_billing: type: boolean description: Boolean value that indicates if the billing information and charges to the managed account "roll up" to the manager account. If true, the managed account will not have its own balance and will use the shared balance with the manager account. This value cannot be changed after account creation without going through Telnyx support as changes require manual updates to the account ledger. Defaults to false. example: false ManagedAccountBalance: type: object properties: record_type: type: string example: balance enum: - balance description: Identifies the type of the resource. balance: type: string description: The account's current balance. example: '300.00' x-format: decimal credit_limit: type: string description: The account's credit limit. example: '100.00' x-format: decimal available_credit: type: string description: Available amount to spend (balance + credit limit) example: '400.00' x-format: decimal currency: type: string description: The ISO 4217 currency identifier. example: USD x-format: iso4217 example: record_type: balance balance: '300.00' credit_limit: '100.00' available_credit: '400.00' currency: USD ManagedAccountMultiListing: type: object title: ManagedAccount required: - record_type - id - email - api_user - manager_account_id - created_at - updated_at properties: record_type: type: string example: managed_account enum: - managed_account description: Identifies the type of the resource. id: type: string format: uuid description: Uniquely identifies the managed account. example: f65ceda4-6522-4ad6-aede-98de83385123 email: type: string format: email description: The managed account's email. example: user@example.com api_user: type: string description: The manager account's email, which serves as the V1 API user identifier example: managed_account@example.com organization_name: type: string description: The organization the managed account is associated with. example: Example Company LLC manager_account_id: type: string description: The ID of the manager account associated with the managed account. example: f65ceda4-6522-4ad6-aede-98de83385123 created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' managed_account_allow_custom_pricing: type: boolean description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not. If false, uses the pricing of the manager account. Defaults to false. There may be time lag between when the value is changed and pricing changes take effect. example: true rollup_billing: type: boolean description: Boolean value that indicates if the billing information and charges to the managed account "roll up" to the manager account. If true, the managed account will not have its own balance and will use the shared balance with the manager account. This value cannot be changed after account creation without going through Telnyx support as changes require manual updates to the account ledger. Defaults to false. example: false ManagedAccountsGlobalOutboundChannels: title: Managed Accounts Global Outbound Channels properties: managed_account_allow_custom_pricing: type: boolean description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not. If false, uses the pricing of the manager account. Defaults to false. This value may be changed, but there may be time lag between when the value is changed and pricing changes take effect. example: false allocatable_global_outbound_channels: type: integer description: The total amount of allocatable global outbound channels available to the authenticated manager. Will be 0 if the feature is not enabled for their account. example: 500 record_type: type: string description: The type of the data contained in this record. example: allocatable_global_outbound_channels total_global_channels_allocated: type: integer description: The total number of allocatable global outbound channels currently allocated across all managed accounts for the authenticated user. This includes any amount of channels allocated by default at managed account creation time. Will be 0 if the feature is not enabled for their account. example: 135 example: allocatable_global_outbound_channels: 500 record_type: allocatable_global_outbound_channels total_global_channels_allocated: 135 type: object MdrDeleteDetailReportResponse: type: object properties: data: $ref: '#/components/schemas/MdrDetailReportResponse' MdrDeleteUsageReportResponse: type: object properties: data: $ref: '#/components/schemas/MdrUsageReportResponseLegacy' MdrDeleteUsageReportsResponse: type: object properties: data: $ref: '#/components/schemas/MdrUsageReportResponse' MdrDetailReportResponse: type: object properties: id: type: string description: Identifies the resource format: uuid start_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' end_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' directions: type: array items: type: string enum: - INBOUND - OUTBOUND record_types: type: array items: type: string enum: - INCOMPLETE - COMPLETED - ERRORS connections: type: array items: type: integer format: int64 report_name: type: string example: report_name_8hvb45Gu status: type: string enum: - PENDING - COMPLETE - FAILED - EXPIRED report_url: type: string example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv filters: type: array items: $ref: '#/components/schemas/Filter' created_at: type: string format: date-time example: '2020-07-01T00:00:00-06:00' updated_at: type: string format: date-time example: '2020-07-01T00:00:00-06:00' profiles: type: array description: List of messaging profile IDs items: type: string format: uuid example: - 3fa85f64-5717-4562-b3fc-2c963f66afa6 - 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f record_type: type: string example: mdr_report MdrDetailResponse: type: object properties: created_at: type: string description: Message sent time format: date-time example: '2020-07-01T00:00:00-06:00' profile_name: type: string description: Configured profile name. New profiles can be created and configured on Telnyx portal example: configured-profile-name direction: type: string description: Direction of message - inbound or outbound. example: outbound parts: type: number description: Number of parts this message has. Max number of character is 160. If message contains more characters then that it will be broken down in multiple parts example: 2 status: type: string description: Message status example: DELIVERED enum: - GW_TIMEOUT - DELIVERED - DLR_UNCONFIRMED - DLR_TIMEOUT - RECEIVED - GW_REJECT - FAILED cld: type: string description: The destination number for a call, or the callee example: '+1555123456' cli: type: string description: The number associated with the person initiating the call, or the caller example: '+1555123456' rate: type: string description: Rate applied to the message example: '0.05' cost: type: string description: Final cost. Cost is calculated as rate * parts example: '0.1' currency: type: string description: Currency of the rate and cost example: USD enum: - AUD - CAD - EUR - GBP - USD id: type: string description: Id of message detail record example: 99b637f3-07fd-45ac-b9ca-b87208c24650 message_type: type: string description: Type of message example: SMS enum: - SMS - MMS record_type: type: string example: mdr_report MdrDetailedRequest: required: - start_time - end_time type: object properties: start_time: type: string description: Start time in ISO format format: date-time example: '2024-02-01T00:00:00Z' end_time: type: string description: 'End time in ISO format. Note: If end time includes the last 4 hours, some MDRs might not appear in this report, due to wait time for downstream message delivery confirmation' format: date-time example: '2024-02-12T23:59:59Z' timezone: type: string description: Timezone for the report example: UTC directions: type: array description: List of directions to filter by (Inbound = 1, Outbound = 2) items: type: integer format: int32 example: - 1 - 2 record_types: type: array description: List of record types to filter by (Complete = 1, Incomplete = 2, Errors = 3) items: type: integer format: int32 example: - 1 - 2 connections: type: array description: List of connections to filter by items: type: integer format: int64 example: - 123 - 456 report_name: type: string description: Name of the report example: My MDR Report include_message_body: type: boolean description: Whether to include message body in the report example: true filters: type: array description: List of filters to apply items: $ref: '#/components/schemas/Filter' profiles: type: array description: List of messaging profile IDs to filter by items: type: string format: uuid example: - 3fa85f64-5717-4562-b3fc-2c963f66afa6 - 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f managed_accounts: type: array description: List of managed accounts to include items: type: string format: uuid example: - f47ac10b-58cc-4372-a567-0e02b2c3d479 - 6ba7b810-9dad-11d1-80b4-00c04fd430c8 select_all_managed_accounts: type: boolean description: Whether to select all managed accounts example: false description: Request object for MDR detailed report MdrGetDetailReportByIdResponse: type: object properties: data: $ref: '#/components/schemas/MdrDetailReportResponse' MdrGetDetailReportResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MdrDetailReportResponse' meta: $ref: '#/components/schemas/batch-csv_PaginationMeta_705dfa7312' MdrGetDetailResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MdrDetailResponse' meta: $ref: '#/components/schemas/reporting_PaginationMeta' MdrGetSyncUsageReportResponse: type: object properties: data: $ref: '#/components/schemas/MdrUsageReportResponse' MdrGetUsageReportByIdResponse: type: object properties: data: $ref: '#/components/schemas/MdrUsageReportResponseLegacy' MdrGetUsageReportsByIdResponse: type: object properties: data: $ref: '#/components/schemas/MdrUsageReportResponse' MdrGetUsageReportsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MdrUsageReportResponse' meta: $ref: '#/components/schemas/reporting_PaginationMeta' MdrPostDetailReportResponse: type: object properties: data: $ref: '#/components/schemas/MdrDetailReportResponse' MdrPostUsageReportRequest: required: - aggregation_type - end_date - start_date type: object properties: start_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' end_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' aggregation_type: type: string enum: - NO_AGGREGATION - PROFILE - TAGS profiles: type: string example: My profile MdrPostUsageReportResponse: type: object properties: data: $ref: '#/components/schemas/MdrUsageReportResponseLegacy' MdrPostUsageReportsResponse: type: object properties: data: $ref: '#/components/schemas/MdrUsageReportResponse' MdrUsageRecord: type: object properties: cost: type: string example: '0' direction: type: string example: outbound product: type: string example: outbound connection: type: string example: all received: type: string example: '0' delivered: type: string example: '0' currency: type: string example: USD parts: type: string example: '0' sent: type: string example: '0' profile_id: type: string example: All tags: type: string example: All message_type: type: string example: SMS tn_type: type: string example: TF carrier_passthrough_fee: type: string example: '0' MdrUsageReportResponse: type: object properties: id: type: string description: Identifies the resource format: uuid start_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' end_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' connections: type: array items: type: integer format: int64 aggregation_type: type: string enum: - NO_AGGREGATION - PROFILE - TAGS status: type: string enum: - PENDING - COMPLETE - FAILED - EXPIRED report_url: type: string example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv result: type: array items: $ref: '#/components/schemas/MdrUsageRecord' created_at: type: string format: date-time example: '2020-07-01T00:00:00-06:00' updated_at: type: string format: date-time example: '2020-07-01T00:00:00-06:00' profiles: type: string example: My profile record_type: type: string example: mdr_usage_report MdrUsageReportResponseLegacy: type: object properties: id: type: string description: Identifies the resource format: uuid start_time: type: string format: date-time example: '2018-02-02T22:25:27.521Z' end_time: type: string format: date-time example: '2018-02-02T22:25:27.521Z' connections: uniqueItems: true type: array example: - '1234567890' - '9876543210' items: type: string aggregation_type: type: integer description: 'Aggregation type: No aggregation = 0, By Messaging Profile = 1, By Tags = 2' format: int32 status: type: integer description: Status of the report (Pending = 1, Complete = 2, Failed = 3, Expired = 4) format: int32 report_url: type: string example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv result: type: object created_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' updated_at: type: string format: date-time example: '2018-02-02T22:25:27.521Z' profiles: type: array description: List of messaging profile IDs items: type: string format: uuid example: - 3fa85f64-5717-4562-b3fc-2c963f66afa6 - 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f record_type: type: string example: mdr_usage_report_v2_legacy description: Legacy V2 MDR usage report response MdrUsageRequestLegacy: required: - aggregation_type type: object properties: start_time: type: string format: date-time example: '2020-01-01T00:00:00Z' end_time: type: string format: date-time example: '2020-01-02T00:00:00Z' aggregation_type: type: integer description: 'Aggregation type: No aggregation = 0, By Messaging Profile = 1, By Tags = 2' format: int32 example: 0 profiles: type: array description: List of messaging profile IDs to filter by items: type: string format: uuid example: - 3fa85f64-5717-4562-b3fc-2c963f66afa6 - 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f select_all_managed_accounts: type: boolean example: true managed_accounts: type: array description: List of managed accounts to include items: type: string format: uuid example: - f47ac10b-58cc-4372-a567-0e02b2c3d479 - 6ba7b810-9dad-11d1-80b4-00c04fd430c8 description: MDR usage request parameters MediaFeatures: description: The media features settings for a phone number. type: object properties: rtp_auto_adjust_enabled: type: boolean default: true description: When RTP Auto-Adjust is enabled, the destination RTP address port will be automatically changed to match the source of the incoming RTP packets. accept_any_rtp_packets_enabled: type: boolean default: false description: When enabled, Telnyx will accept RTP packets from any customer-side IP address and port, not just those to which Telnyx is sending RTP. t38_fax_gateway_enabled: type: boolean default: false description: Controls whether Telnyx will accept a T.38 re-INVITE for this phone number. Note that Telnyx will not send a T.38 re-INVITE; this option only controls whether one will be accepted. example: rtp_auto_adjust_enabled: true accept_any_rtp_packets_enabled: true t38_fax_gateway_enabled: true MediaName: description: 'The media_name used for the fax''s media. Must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. Supported formats: PDF, TIFF, JPEG, PNG, DOC, DOCX, RTF, and TXT. media_name and media_url/contents can''t be submitted together.' type: string example: my_media_uploaded_to_media_storage_api MediaResource: type: object title: Media Resource properties: media_name: description: Uniquely identifies a media resource. type: string expires_at: description: ISO 8601 formatted date of when the media resource will expire and be deleted. type: string example: '2020-01-23T18:10:02.574Z' created_at: type: string description: ISO 8601 formatted date of when the media resource was created example: '2019-01-23T18:10:02.574Z' updated_at: type: string description: ISO 8601 formatted date of when the media resource was last updated example: '2019-01-23T18:10:02.574Z' content_type: type: string description: Content type of the file example: application/xml example: media_name: f5586561-8ff0-4291-a0ac-84fe544797bd expires_at: '2020-01-23T18:10:02.574Z' created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' content_type: application/xml MediaStorageDetailRecord: type: object properties: id: type: string description: Unique identifier for the Media Storage Event example: 3ca7bd3d-7d82-4e07-9df4-009123068320 created_at: type: string description: Event creation time format: date-time example: '2020-07-01T00:00:00Z' asset_id: type: string description: Asset id example: a46f4764-4ce4-4391-804c-02f00bc4ff9b user_id: type: string description: User id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 org_id: type: string description: Organization owner id example: 3ca7bd3d-7d82-4e07-9df4-009123068320 action_type: type: string description: Type of action performed against the Media Storage API example: upload link_channel_type: type: string description: Link channel type example: message link_channel_id: type: string description: Link channel id example: 2065f482-64b9-4680-a3a9-c6d3142efdf7 status: type: string description: Request status example: failed webhook_id: type: string description: Webhook id example: b46f4764-4ce4-4391-804c-02f00bc4ff9b rate: type: string description: Currency amount per billing unit used to calculate the Telnyx billing cost example: '0.0001' rate_measured_in: type: string description: Billing unit used to calculate the Telnyx billing cost example: events cost: type: string description: Currency amount for Telnyx billing cost example: '0.004' currency: type: string description: Telnyx account currency used to describe monetary values, including billing cost example: USD record_type: type: string example: media_storage default: media_storage required: - record_type MediaUrl: description: 'The URL (or list of URLs) to the fax document. Supported formats: PDF, TIFF, JPEG, PNG, DOC, DOCX, RTF, and TXT. media_url and media_name/contents can''t be submitted together.' type: string example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf MeetingSession: title: MeetingSession type: object additionalProperties: false description: Represents a meeting session. All serializer fields are present and required; nullable fields use null when absent. No actor, provider-bot, idempotency, routing, key, or internal fields are exposed. required: - id - account_id - provider - status - status_detail - recording - meeting_url - platform - bot_name - config - avatar - avatar_state - avatar_state_changed_at - assistant - assistant_state - assistant_state_changed_at - webhook_url - metadata - failure_reason - created_at - join_at - joined_at - ended_at - updated_at properties: id: type: string description: Unique identifier for the meeting session. account_id: type: string description: Identifier of the owning account. provider: type: string description: Provider handling the meeting session. status: type: string enum: - scheduled - joining - waiting_for_admission - active - leaving - ended - failed - admission_denied description: Lifecycle status. `waiting_for_admission` means the bot reached the meeting lobby and may require host approval. `active` means the bot entered the meeting/media path. `ended` alone does not prove attendance; use non-null `joined_at` as positive evidence that the session became active. `admission_denied` is reserved for an explicit provider denial, while cancellation or another termination can end a never-admitted session as `ended`. status_detail: type: - string - 'null' description: Additional human-readable detail about the status, or null. recording: type: boolean description: Whether the session is being recorded. meeting_url: type: string format: uri description: The meeting URL the bot joins. platform: type: string enum: - zoom - google_meet - teams - webex - unknown description: Detected meeting platform. bot_name: type: string description: Display name of the bot in the meeting. config: $ref: '#/components/schemas/MeetingSessionConfig' avatar: oneOf: - $ref: '#/components/schemas/MeetingSessionAvatar' - type: 'null' description: 'The assistant''s avatar when the session was created with `assistant.avatar: true`, otherwise null.' avatar_state: type: - string - 'null' enum: - starting - connected - degraded - disconnected - null description: Current state of the avatar, or null if the session has no avatar. `starting` until the avatar's video is playing, then `connected`; `degraded` when the session has fallen back to voice-only (the `avatar.degraded` event carries the reason); `disconnected` when the avatar has ended. avatar_state_changed_at: type: - string - 'null' format: date-time description: Timestamp of the last avatar state change, or null. assistant: oneOf: - $ref: '#/components/schemas/MeetingSessionAssistant' - type: 'null' description: Assistant configuration if an assistant is attached, otherwise null. assistant_state: type: - string - 'null' enum: - starting - connected - failed - ended - null description: Current state of the assistant, or null if no assistant is attached. assistant_state_changed_at: type: - string - 'null' format: date-time description: Timestamp of the last assistant state change, or null. webhook_url: type: - string - 'null' format: uri description: Webhook endpoint for session lifecycle callbacks, or null if not configured. metadata: type: object additionalProperties: true description: Arbitrary key-value metadata attached to the session. failure_reason: type: - string - 'null' description: Human-readable failure reason if the session failed, or null. created_at: type: string format: date-time description: Timestamp when the session was created. join_at: type: - string - 'null' format: date-time description: Scheduled join time, or null for immediate join. joined_at: type: - string - 'null' format: date-time description: Timestamp when the session first became `active`, or null if it never became active. This remains positive admission evidence after terminal transitions. ended_at: type: - string - 'null' format: date-time description: Timestamp when the session ended, or null if ongoing. updated_at: type: string format: date-time description: Timestamp of the last update to the session. MeetingSessionArtifact: type: object required: - id - session_id - type - status - content - model_provenance - failure_reason - created_at - updated_at - prompt properties: id: type: string session_id: type: string type: type: string enum: - summary - action_items - decisions - topics - open_questions - custom status: type: string enum: - pending - completed - failed content: anyOf: - $ref: '#/components/schemas/ArtifactContent' - type: 'null' model_provenance: anyOf: - $ref: '#/components/schemas/ModelProvenance' - type: 'null' failure_reason: type: - string - 'null' created_at: type: string format: date-time updated_at: type: string format: date-time prompt: anyOf: - type: string - type: 'null' description: The prompt that produced this artifact, or null for a named type. Non-null only when `type` is `custom`; the five named types always return `null`. examples: - id: mtgart_550e8400-e29b-41d4-a716-446655440000 session_id: mtgsess_550e8400-e29b-41d4-a716-446655440001 type: action_items status: pending content: null model_provenance: null failure_reason: null created_at: '2025-01-15T10:30:00Z' updated_at: '2025-01-15T10:30:00Z' prompt: null - id: mtgart_550e8400-e29b-41d4-a716-446655440002 session_id: mtgsess_550e8400-e29b-41d4-a716-446655440001 type: summary status: completed content: text: The team reviewed project goals and agreed on next steps. model_provenance: model: example-model provider: example-provider failure_reason: null created_at: '2025-01-15T10:30:00Z' updated_at: '2025-01-15T10:31:00Z' prompt: null additionalProperties: false MeetingSessionArtifactListResponse: type: object additionalProperties: false required: - data properties: data: type: array items: $ref: '#/components/schemas/MeetingSessionArtifact' MeetingSessionArtifactResponse: type: object additionalProperties: false required: - data properties: data: $ref: '#/components/schemas/MeetingSessionArtifact' MeetingSessionAssistant: title: MeetingSessionAssistant type: object additionalProperties: false required: - id - audio_gate - dynamic_variables - leave_on_end properties: id: type: string description: Identifier of the assistant. audio_gate: type: string enum: - half_duplex - full_duplex description: Audio gating strategy in force for the assistant call leg. dynamic_variables: anyOf: - type: object additionalProperties: type: string - type: 'null' description: The dynamic variables in force for this session, or null when none were supplied. leave_on_end: type: boolean description: Whether the bot leaves when the Assistant's conversation ends or fails. MeetingSessionAssistantRequest: title: MeetingSessionAssistantRequest type: object additionalProperties: false description: Attach a Telnyx AI Assistant to the session. Supply the Assistant's ID; the Meeting service connects it to the meeting directly. The Call Control connection, caller ID and loopback SIP URI previously required here have been removed and are now rejected as unknown fields. required: - id properties: id: type: string minLength: 1 maxLength: 255 description: Identifier of the assistant to attach. audio_gate: type: string enum: - half_duplex - full_duplex default: half_duplex description: 'Audio gating strategy for the assistant call leg. `half_duplex` (default) sends the assistant a single mixed meeting stream and mutes it while the assistant speaks, so the assistant cannot hear itself and cannot be interrupted. `full_duplex` sends a separate stream per participant, which allows barge-in and removes self-hearing, and COSTS SIGNIFICANTLY MORE: per-participant streams multiply the per-minute cost by the number of participants.' dynamic_variables: type: object description: Per-conversation values for the [dynamic variables](/docs/inference/ai-assistants/dynamic-variables) used in the Assistant's instructions, greeting, or tools. Delivered before the Assistant's first utterance, so they resolve for the opening line as well as the rest of the conversation. At most 63 entries; keys 1-128 characters; values must be strings. The map is budgeted in aggregate at 1,047,552 bytes (1023 KiB) rather than capped per value. `streaming_audio`, `ai_assistant_streaming_audio` and `meeting_session_id` are reserved and rejected with `400 invalid_request` -- they toggle provider infrastructure or are set by the service rather than fill a prompt template. maxProperties: 63 propertyNames: minLength: 1 maxLength: 128 not: enum: - streaming_audio - ai_assistant_streaming_audio - meeting_session_id additionalProperties: type: string leave_on_end: type: boolean default: false description: 'Leave the meeting when the Assistant''s conversation reaches a terminal state -- `ended` **or** `failed`. Off by default, which leaves the bot in the meeting after the Assistant stops. Fires once: a second terminal transition does not leave twice, and a leave the provider refuses is logged without changing how the session settles.' avatar: type: boolean default: false description: 'Beta. Show the avatar configured on the assistant (its `avatar_settings`; see [AI Assistant avatars](/docs/inference/ai-assistants/avatars)) as the bot''s camera, lip-synced to the assistant''s own speech. The request carries no avatar ID or key: the assistant is read at creation and the request is rejected with 400 `invalid_request` if it has no Telnyx avatar configured. Supported on Google Meet, Zoom, Microsoft Teams and Webex; other platforms return 422 `unsupported_capability`. REST-only. Not echoed back on `assistant`; the session''s top-level `avatar` and `avatar_state` fields report it instead. If the avatar fails, the session continues voice-only and `avatar_state` becomes `degraded`.' MeetingSessionAvatar: title: MeetingSessionAvatar type: object additionalProperties: false description: The assistant's avatar, captured from its `avatar_settings` when the session was created. For display only; later changes to the assistant do not update it. required: - provider - model - avatar_id - background_id properties: provider: type: string const: telnyx description: Avatar provider identifier. model: type: string description: Avatar rendering model, for example `foxtrot-1`. avatar_id: type: string description: Identifier of the avatar. background_id: type: string description: Identifier of the avatar's background. MeetingSessionCameraImage: title: MeetingSessionCameraImage type: object description: Write-only static camera-tile image for this session, not a native account or participant profile photo. Supply exactly one JPEG source. When effective, the image is used as the bot's static camera/video output; presentation varies by meeting platform and recording configuration and is not guaranteed in recordings. An effective Avatar or Assistant webpage output takes precedence, so this input is ignored and a URL source is not fetched. writeOnly: true oneOf: - $ref: '#/components/schemas/MeetingSessionCameraImageBase64Source' - $ref: '#/components/schemas/MeetingSessionCameraImageUrlSource' MeetingSessionCameraImageBase64Source: title: MeetingSessionCameraImageBase64Source type: object additionalProperties: false required: - format - base64_data properties: format: type: string const: jpeg description: Only JPEG images are accepted. base64_data: type: string minLength: 4 maxLength: 1835008 pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$ description: Canonical plain RFC 4648 Base64 for a valid decoded JPEG. Data URIs, whitespace, and the URL-safe alphabet are rejected. The encoded value is limited to 1,835,008 characters and the decoded JPEG to 1,363,148 bytes. The JPEG is limited to 4,096 pixels per dimension, 4 megapixels, and 128 MB of decoder memory. The image bytes are not persisted, returned, or logged. examples: - format: jpeg base64_data: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAACAAIBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACP/EAB4QAAAEBwAAAAAAAAAAAAAAAAAEBgcCFic1RVNi/9oACAEBAAA/AH8hGJbWR09TxKW4vhC2qHgf/9k= MeetingSessionCameraImageUrlSource: title: MeetingSessionCameraImageUrlSource type: object additionalProperties: false required: - format - url properties: format: type: string const: jpeg description: Only JPEG images are accepted. url: type: string format: uri minLength: 1 maxLength: 2048 pattern: ^[Hh][Tt][Tt][Pp][Ss]:// description: Public HTTPS JPEG URL with at most 2,048 characters and no credentials, fragment, surrounding whitespace, raw control characters, or explicit non-default port. Signed queries are allowed but must be treated as credentials. Fetching is limited to public network destinations, a five-second timeout, no redirects, a 2xx image/jpeg response with identity or no content encoding, and a 1,363,148-byte limit enforced against both declared and streamed content. The service resolves the URL before bot creation and does not persist, return, or log the URL or image bytes. examples: - format: jpeg url: https://cdn.example.com/bot-camera.jpg MeetingSessionConfig: title: MeetingSessionConfig type: object additionalProperties: false required: - voice - speak_on_enter - barge_in - summarize_on_end - chat_on_enter properties: voice: type: - string - 'null' description: Configured voice identifier, or null if not set. speak_on_enter: type: - string - 'null' description: Text spoken on meeting entry, or null if not set. chat_on_enter: anyOf: - type: string - type: 'null' description: The message posted to chat on join, or null when unset. barge_in: type: boolean description: 'When enabled, a human participant `speech_on` event interrupts and stops the current bot audio; it does not bypass admission or initiate speech. Assistant sessions reject `barge_in: true`.' summarize_on_end: type: boolean description: Whether a summary artifact is generated on session end. MeetingSessionCreated: title: MeetingSessionCreated type: object additionalProperties: false description: Response returned when a meeting session is first created. It is a full session representation plus an optional `webhook_secret` that is returned only on the first successful create when a `webhook_url` is configured. The secret is never replayed, listed, or retrievable on subsequent requests. No actor, provider-bot, idempotency, routing, key, or internal fields are exposed. required: - id - account_id - provider - status - status_detail - recording - meeting_url - platform - bot_name - config - avatar - avatar_state - avatar_state_changed_at - assistant - assistant_state - assistant_state_changed_at - webhook_url - metadata - failure_reason - created_at - join_at - joined_at - ended_at - updated_at properties: id: type: string description: Unique identifier for the meeting session. account_id: type: string description: Identifier of the owning account. provider: type: string description: Provider handling the meeting session. status: type: string enum: - scheduled - joining - waiting_for_admission - active - leaving - ended - failed - admission_denied description: Lifecycle status. `waiting_for_admission` means the bot reached the meeting lobby and may require host approval. `active` means the bot entered the meeting/media path. `ended` alone does not prove attendance; use non-null `joined_at` as positive evidence that the session became active. `admission_denied` is reserved for an explicit provider denial, while cancellation or another termination can end a never-admitted session as `ended`. status_detail: type: - string - 'null' description: Additional human-readable detail about the status, or null. recording: type: boolean description: Whether the session is being recorded. meeting_url: type: string format: uri description: The meeting URL the bot joins. platform: type: string enum: - zoom - google_meet - teams - webex - unknown description: Detected meeting platform. bot_name: type: string description: Display name of the bot in the meeting. config: $ref: '#/components/schemas/MeetingSessionConfig' avatar: oneOf: - $ref: '#/components/schemas/MeetingSessionAvatar' - type: 'null' description: 'The assistant''s avatar when the session was created with `assistant.avatar: true`, otherwise null.' avatar_state: type: - string - 'null' enum: - starting - connected - degraded - disconnected - null description: Current state of the avatar, or null if the session has no avatar. `starting` until the avatar's video is playing, then `connected`; `degraded` when the session has fallen back to voice-only (the `avatar.degraded` event carries the reason); `disconnected` when the avatar has ended. avatar_state_changed_at: type: - string - 'null' format: date-time description: Timestamp of the last avatar state change, or null. assistant: oneOf: - $ref: '#/components/schemas/MeetingSessionAssistant' - type: 'null' description: Assistant configuration if an assistant is attached, otherwise null. assistant_state: type: - string - 'null' enum: - starting - connected - failed - ended - null description: Current state of the assistant, or null if no assistant is attached. assistant_state_changed_at: type: - string - 'null' format: date-time description: Timestamp of the last assistant state change, or null. webhook_url: type: - string - 'null' format: uri description: Webhook endpoint for session lifecycle callbacks, or null if not configured. metadata: type: object additionalProperties: true description: Arbitrary key-value metadata attached to the session. failure_reason: type: - string - 'null' description: Human-readable failure reason if the session failed, or null. created_at: type: string format: date-time description: Timestamp when the session was created. join_at: type: - string - 'null' format: date-time description: Scheduled join time, or null for immediate join. joined_at: type: - string - 'null' format: date-time description: Timestamp when the session first became `active`, or null if it never became active. This remains positive admission evidence after terminal transitions. ended_at: type: - string - 'null' format: date-time description: Timestamp when the session ended, or null if ongoing. updated_at: type: string format: date-time description: Timestamp of the last update to the session. webhook_secret: type: string readOnly: true description: Secret for validating webhook signatures. Returned only on the first successful create when `webhook_url` is configured. Never replayed, listed, or retrievable on subsequent requests. examples: - id: mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890 account_id: acct_fake-uuid-0001 provider: telnyx status: scheduled status_detail: null recording: false meeting_url: https://zoom.us/j/1234567890 platform: zoom bot_name: Notetaker config: voice: null speak_on_enter: null barge_in: false summarize_on_end: false chat_on_enter: null avatar: null avatar_state: null avatar_state_changed_at: null assistant: null assistant_state: null assistant_state_changed_at: null webhook_url: null metadata: {} failure_reason: null created_at: '2026-07-30T12:00:00Z' join_at: '2026-07-30T13:00:00Z' joined_at: null ended_at: null updated_at: '2026-07-30T12:00:00Z' - id: mtgsess_b2c3d4e5-f6a7-8901-bcde-f23456789012 account_id: acct_fake-uuid-0002 provider: telnyx status: joining status_detail: null recording: false meeting_url: https://teams.microsoft.com/l/meetup-join/example platform: teams bot_name: Voice Assistant config: voice: voice-fake-001 speak_on_enter: Hello, I am joining. barge_in: false summarize_on_end: true chat_on_enter: null avatar: null avatar_state: null avatar_state_changed_at: null assistant: id: asst_fake-uuid-1234 audio_gate: half_duplex dynamic_variables: null leave_on_end: false assistant_state: starting assistant_state_changed_at: '2026-07-30T12:00:00Z' webhook_url: https://example.invalid/webhooks/sessions metadata: {} failure_reason: null created_at: '2026-07-30T12:00:00Z' join_at: null joined_at: null ended_at: null updated_at: '2026-07-30T12:00:00Z' webhook_secret: whsec_example_do_not_use MeetingSessionEvent: type: object additionalProperties: false required: - seq - type - payload - occurred_at properties: seq: type: integer type: type: string payload: type: object additionalProperties: true occurred_at: type: string format: date-time MeetingSessionEventListResponse: type: object additionalProperties: false required: - data properties: data: type: array items: $ref: '#/components/schemas/MeetingSessionEvent' MeetingSessionListResponse: type: object additionalProperties: false required: - data properties: data: type: array items: $ref: '#/components/schemas/MeetingSession' MeetingSessionRecordingMediaDeletionResponse: type: object additionalProperties: false required: - data properties: data: type: object additionalProperties: false required: - meeting_session_id - provider - scope - deletion_status properties: meeting_session_id: type: string description: The account-scoped Meeting Session identifier. provider: type: string const: telnyx scope: type: string const: provider_recording_media deletion_status: type: string enum: - requested - already_in_progress example: data: meeting_session_id: mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890 provider: telnyx scope: provider_recording_media deletion_status: requested MeetingSessionResponse: type: object additionalProperties: false required: - data properties: data: $ref: '#/components/schemas/MeetingSession' MemoryListResponse: properties: data: items: $ref: '#/components/schemas/ListedMemory' type: array title: Data meta: $ref: '#/components/schemas/PageMeta' type: object required: - data - meta title: MemoryListResponse MemoryResponse: properties: data: $ref: '#/components/schemas/TracedMemory' type: object required: - data title: MemoryResponse MessageDetailRecord: type: object properties: uuid: type: string description: Unique identifier of the message example: 3ca7bd3d-7d82-4e07-9df4-009123068320 user_id: type: string description: Identifier of the Telnyx account who owns the message example: 3ca7bd3d-7d82-4e07-9df4-009123068320 completed_at: type: string description: Message completion time format: date-time example: '2020-07-01T00:00:00Z' created_at: type: string description: Message creation time format: date-time example: '2020-07-01T00:00:00Z' updated_at: type: string description: Message updated time format: date-time example: '2020-07-01T00:00:00Z' sent_at: type: string description: Time when the message was sent format: date-time example: '2020-07-01T00:00:00Z' carrier: type: string description: Country-specific carrier used to send or receive the message example: T-Mobile USA carrier_fee: type: string description: Fee charged by certain carriers in order to deliver certain message types. Telnyx passes this fee on to the customer according to our pricing table example: '0.003' cld: type: string description: The recipient of the message (to parameter in the Messaging API) example: '+1555123456' cli: type: string description: The sender of the message (from parameter in the Messaging API). For Alphanumeric ID messages, this is the sender ID value example: '+1555123456' country_code: type: string description: Two-letter representation of the country of the cld property using the ISO 3166-1 alpha-2 format example: US delivery_status: type: string description: Final webhook delivery status example: 'success: webhook succeeded' delivery_status_failover_url: type: string description: Failover customer-provided URL which Telnyx posts delivery status webhooks to example: https://api.example.com/sms/telnyx/inbound delivery_status_webhook_url: type: string description: Primary customer-provided URL which Telnyx posts delivery status webhooks to example: https://api.example.com/sms/telnyx/inbound direction: type: string description: Logical direction of the message from the Telnyx customer's perspective. It's inbound when the Telnyx customer receives the message, or outbound otherwise example: outbound enum: - inbound - outbound fteu: type: boolean description: Indicates whether this is a Free-To-End-User (FTEU) short code message example: false mcc: type: string description: Mobile country code. Only available for certain products, such as Global Outbound-Only from Alphanumeric Sender ID example: '204' mnc: type: string description: Mobile network code. Only available for certain products, such as Global Outbound-Only from Alphanumeric Sender ID example: '01' message_type: type: string description: 'Describes the Messaging service used to send the message. Available services are: Short Message Service (SMS), Multimedia Messaging Service (MMS), and Rich Communication Services (RCS)' example: SMS enum: - SMS - MMS - RCS on_net: type: boolean description: Indicates whether both sender and recipient numbers are Telnyx-managed example: true profile_id: type: string description: Unique identifier of the Messaging Profile used to send or receive the message example: 30ef55db-c4a2-4c4a-9804-a68077973d07 profile_name: type: string description: Name of the Messaging Profile used to send or receive the message example: My Messaging Profile source_country_code: type: string description: Two-letter representation of the country of the cli property using the ISO 3166-1 alpha-2 format example: US status: type: string description: Final status of the message after the delivery attempt example: delivered enum: - gw_timeout - delivered - dlr_unconfirmed - dlr_timeout - received - gw_reject - failed tags: type: string description: Comma-separated tags assigned to the Telnyx number associated with the message example: tag1,tag2,tag3 rate: type: string description: Currency amount per billing unit used to calculate the Telnyx billing cost example: '0.003' currency: type: string description: Telnyx account currency used to describe monetary values, including billing cost example: USD cost: type: string description: Amount, in the user currency, for the Telnyx billing cost example: '0.003' errors: type: array description: Telnyx API error codes returned by the Telnyx gateway items: type: string example: '40001' parts: type: integer description: Number of message parts. The message is broken down in multiple parts when its length surpasses the limit of 160 characters example: 2 record_type: type: string description: Identifies the record schema example: message_detail_record default: message_detail_record required: - record_type MessageEvent: type: object description: An event on the per-message events endpoint. The legacy event_type and additive canonical_event_type are email.-prefixed. The deprecated type preserves the bare stored event name for compatibility. properties: type: allOf: - $ref: '#/components/schemas/EmailEventType' deprecated: true description: Deprecated name field retained for compatibility. Its value is the bare stored event name, never email.-prefixed. Use event_type for the legacy rendering or canonical_event_type for the canonical name. event_type: type: string pattern: ^email\. example: email.delivered description: Legacy customer-visible event name, prefixed with `email.`. Gateway rejections render `email.failed`; MTA expirations render `email.bounced`. Webhook subscription allowlists match the legacy name. canonical_event_type: type: string pattern: ^email\. example: email.delivered description: Additive canonical outcome name, prefixed with `email.`. Gateway rejection is `email.gw_reject`, ambiguous injection timeout is `email.injection_timeout`, and MTA expiration is `email.expired`. Unchanged outcomes retain their names. Existing stored rows are translated only when recorded payload evidence proves the outcome; a legacy failed row is not guessed or sharpened. occurred_at: type: string format: date-time payload: type: object additionalProperties: true required: - type - event_type - canonical_event_type - occurred_at MessageEventListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MessageEvent' meta: $ref: '#/components/schemas/email_PaginationMeta' required: - data - meta MessageMetadata: description: Metadata to add to the message type: object MessageTemplateResponseDataWrapper: title: MessageTemplateResponseDataWrapper type: object properties: data: $ref: '#/components/schemas/VerifyProfileMessageTemplateResponse' MessagingFeatureSet: type: - object - 'null' required: - domestic_two_way - international_inbound - international_outbound description: 'The set of features available for a specific messaging use case (SMS or MMS). Features can vary depending on the characteristics the phone number, as well as its current product configuration. ' properties: domestic_two_way: type: boolean description: Send messages to and receive messages from numbers in the same country. international_inbound: type: boolean description: Receive messages from numbers in other countries. international_outbound: type: boolean description: Send messages to numbers in other countries. example: domestic_two_way: true international_inbound: false international_outbound: true MessagingHostedNumberOrder: type: object example: id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 record_type: messaging_hosted_number_order messaging_profile_id: dc8f39ac-953d-4520-b93b-786ae87db0da status: pending phone_numbers: - record_type: messaging_hosted_number id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c phone_number: '+18665550001' status: pending - record_type: messaging_hosted_number id: 464bd54e-a328-4b11-a131-28e6793cb6f2 phone_number: '+18665550002' status: pending properties: record_type: type: string example: messaging_hosted_number_order description: Identifies the type of the resource. readOnly: true id: type: string format: uuid description: Resource unique identifier. readOnly: true messaging_profile_id: type: - string - 'null' description: Automatically associate the number with this messaging profile ID when the order is complete. status: type: string enum: - carrier_rejected - compliance_review_failed - deleted - failed - incomplete_documentation - incorrect_billing_information - ineligible_carrier - loa_file_invalid - loa_file_successful - pending - provisioning - successful phone_numbers: type: array items: $ref: '#/components/schemas/HostedNumber' MessagingInboundMessage: type: object properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. id: type: string format: uuid description: Identifies the type of resource. event_type: type: string example: message.received enum: - message.received description: The type of event being delivered. occurred_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. payload: $ref: '#/components/schemas/MessagingInboundMessagePayload' example: record_type: event id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c event_type: message.received occurred_at: '2019-01-23T18:10:02.574Z' payload: record_type: message direction: inbound id: 7ee4241c-f127-47e5-9c34-3aac291f8058 type: SMS messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18665550001' carrier: T-MOBILE USA, INC. line_type: Wireless to: - phone_number: '+18445550001' status: delivered carrier: TELNYX LLC line_type: VoIP cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: [] webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] MessagingInboundMessageEvent: type: object properties: data: $ref: '#/components/schemas/MessagingInboundMessage' MessagingInboundMessagePayload: properties: autoresponse_type: type: string description: Automatic response type triggered by an inbound opt-in, opt-out, or help keyword. Examples include START, STOP, and HELP. example: STOP record_type: type: string example: message enum: - message description: Identifies the type of the resource. direction: type: string example: inbound enum: - inbound description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you. id: type: string format: uuid description: Identifies the type of resource. type: type: string enum: - SMS - MMS - WHATSAPP - RCS description: The messaging channel used for the message. messaging_profile_id: type: string description: Unique identifier for a messaging profile. organization_id: type: string description: Unique identifier for a messaging profile. to: description: Receiving address. SMS, MMS and RCS webhooks use an array of recipients. RCS recipients are identified by agent_id and agent_name. WhatsApp webhooks use one E.164 phone number. oneOf: - type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string enum: - queued - sending - sent - delivered - sending_failed - delivery_failed - delivery_unconfirmed - webhook_delivered carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' agent_id: type: string description: RCS agent identifier. agent_name: type: string description: RCS agent name. - type: string description: WhatsApp receiving address in E.164 format. x-format: address cc: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string enum: - queued - sending - sent - delivered - sending_failed - delivery_failed - delivery_unconfirmed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' from: type: object properties: phone_number: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address status: type: string enum: - received - delivered - webhook_delivered carrier: type: string description: The carrier of the sender. line_type: type: string description: The line-type of the sender. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' - long_code body: type: object description: Message body for RCS and WhatsApp. RCS messages contain text, user_file, location, or suggestion_response. For WhatsApp edits and revocations, inspect type and the corresponding edit or revoke object. properties: from: type: string description: WhatsApp sender in E.164 format. Empty when the user hides their phone number; `from_user_id` then identifies the sender. x-format: address from_user_id: type: string description: Business-scoped user ID (BSUID) of the WhatsApp sender when Meta provides one, for example `US.13491208655302741918`. When `from` is empty, pass this value as `to` to reply. id: type: string description: Telnyx identifier for this webhook message. foreign_id: type: string description: Meta WhatsApp message identifier for this webhook event. timestamp: type: string description: Unix timestamp supplied by Meta. type: type: string description: WhatsApp message body type. Edit and revoke events use `edit` and `revoke`, respectively. examples: - edit - revoke edit: type: object description: Details for an edited WhatsApp message. properties: original_message_id: type: string description: Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat this value as opaque. message: type: object description: Replacement WhatsApp message content. Its shape depends on the message type. additionalProperties: true required: - original_message_id - message revoke: type: object description: Details for a revoked WhatsApp message. properties: original_message_id: type: string description: Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat this value as opaque. required: - original_message_id text: description: RCS text string or WhatsApp text object. oneOf: - type: string - type: object properties: body: type: string additionalProperties: true user_file: type: object description: RCS file attachment and optional thumbnail. properties: payload: type: object properties: file_name: type: string file_size_bytes: type: integer file_uri: type: string mime_type: type: string thumbnail: type: object properties: file_name: type: string file_size_bytes: type: integer file_uri: type: string mime_type: type: string location: type: object description: Location shared in an RCS message. properties: latitude: type: number longitude: type: number suggestion_response: type: object description: Selected RCS suggestion. properties: postback_data: type: string text: type: string additionalProperties: true text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' num_chars: type: integer description: The number of characters in the message text subject: type: - string - 'null' description: Message subject. media: type: array items: type: object properties: url: type: string format: url description: The url of the media requested to be sent. content_type: type: string description: The MIME type of the requested media. x-format: mime-type size: type: integer description: The size of the requested media. hash_sha256: type: string minLength: 32 maxLength: 32 description: The SHA256 hash of the requested media. webhook_url: type: - string - 'null' format: url description: The URL where webhooks related to this message will be sent. webhook_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. encoding: type: string description: Encoding scheme used for the message body. parts: type: integer minimum: 1 maximum: 10 description: Number of parts into which the message's body must be split. tags: type: array description: Tags associated with the resource. items: type: string cost: type: - object - 'null' properties: amount: type: - string - 'null' description: The amount deducted from your account. x-format: decimal currency: type: - string - 'null' description: The ISO 4217 currency identifier. x-format: iso4217 cost_breakdown: type: - object - 'null' properties: carrier_fee: type: object properties: amount: type: string description: The carrier fee amount. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 rate: type: object properties: amount: type: string description: The rate amount applied. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 description: Detailed breakdown of the message cost components. tcr_campaign_id: type: - string - 'null' description: The Campaign Registry (TCR) campaign ID associated with the message. tcr_campaign_billable: type: boolean description: Indicates whether the TCR campaign is billable. tcr_campaign_registered: type: - string - 'null' description: The registration status of the TCR campaign. example: REGISTERED received_at: type: string format: date-time description: ISO 8601 formatted date indicating when the message request was received. sent_at: type: - string - 'null' format: date-time description: Not used for inbound messages. completed_at: type: - string - 'null' format: date-time description: Not used for inbound messages. valid_until: type: - string - 'null' description: Not used for inbound messages. format: date-time errors: type: array description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses. items: $ref: '#/components/schemas/messaging_Error_0b38e7044b' example: record_type: message direction: inbound id: 7ee4241c-f127-47e5-9c34-3aac291f8058 type: SMS messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18665550001' status: delivered carrier: T-MOBILE USA, INC. line_type: Wireless to: - phone_number: '+18445550001' status: delivered carrier: TELNYX LLC line_type: VoIP cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: [] webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] MessagingMetricsTimeFrame: type: string title: Messaging Metrics Time Frame description: The time frame for metrics aggregation. enum: - 1h - 3h - 24h - 3d - 7d - 30d default: 24h MessagingOutboundMessage: properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. id: type: string format: uuid description: Identifies the type of resource. event_type: type: string example: message.sent enum: - message.sent - message.finalized - message.read description: The type of event being delivered. occurred_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. payload: $ref: '#/components/schemas/MessagingOutboundMessagePayload' example: record_type: event id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 event_type: message.sent occurred_at: '2019-01-23T18:10:02.574Z' payload: record_type: message direction: outbound id: 40385f64-5717-4562-b3fc-2c963f66afa6 type: MMS messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18445550001' carrier: TELNYX LLC line_type: VoIP to: - phone_number: '+18665550001' status: queued carrier: T-MOBILE USA, INC. line_type: Wireless cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: - url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png content_type: null sha256: null size: null webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] MessagingOutboundMessageEvent: type: object properties: data: $ref: '#/components/schemas/MessagingOutboundMessage' meta: type: object properties: attempt: type: integer example: 1 description: Number of attempts to deliver the webhook event. delivered_to: type: string format: url example: https://www.example.com/hooks description: The webhook URL the event was delivered to. MessagingOutboundMessagePayload: type: object properties: record_type: type: string example: message enum: - message description: Identifies the type of the resource. direction: type: string example: outbound enum: - outbound description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you. id: type: string format: uuid description: Identifies the type of resource. type: type: string enum: - SMS - MMS - RCS - WHATSAPP description: The type of message. messaging_profile_id: type: string description: Unique identifier for a messaging profile. organization_id: type: string format: uuid description: The id of the organization the messaging profile belongs to. from: type: object properties: phone_number: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' agent_id: type: string description: RCS agent identifier. agent_name: type: string description: RCS agent name. to: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string description: The delivery status of the message. enum: - queued - sending - sent - expired - sending_failed - delivery_unconfirmed - delivered - delivery_failed - read carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' cc: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string enum: - queued - sending - sent - delivered - sending_failed - delivery_failed - delivery_unconfirmed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' num_chars: type: integer description: The number of characters in the message text subject: type: - string - 'null' description: Subject of multimedia message media: type: array items: type: object properties: url: type: string format: url description: The url of the media requested to be sent. content_type: type: - string - 'null' x-format: mime-type description: The MIME type of the requested media. sha256: type: - string - 'null' description: The SHA256 hash of the requested media. size: type: - integer - 'null' description: The size of the requested media. webhook_url: type: - string - 'null' format: url description: The URL where webhooks related to this message will be sent. webhook_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. encoding: type: string description: Encoding scheme used for the message body. parts: type: integer minimum: 1 maximum: 10 description: Number of parts into which the message's body must be split. tags: type: array description: Tags associated with the resource. items: type: string cost: type: - object - 'null' properties: amount: type: string description: The amount deducted from your account. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 cost_breakdown: type: - object - 'null' properties: carrier_fee: type: object properties: amount: type: string description: The carrier fee amount. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 rate: type: object properties: amount: type: string description: The rate amount applied. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 description: Detailed breakdown of the message cost components. tcr_campaign_id: type: - string - 'null' description: The Campaign Registry (TCR) campaign ID associated with the message. tcr_campaign_billable: type: boolean description: Indicates whether the TCR campaign is billable. tcr_campaign_registered: type: - string - 'null' description: The registration status of the TCR campaign. example: REGISTERED received_at: type: string format: date-time description: ISO 8601 formatted date indicating when the message request was received. sent_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was sent. completed_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was finalized. valid_until: type: - string - 'null' description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled format: date-time errors: type: array description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses. items: $ref: '#/components/schemas/messaging_Error_0b38e7044b' smart_encoding_applied: type: boolean description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks. wait_seconds: type: - number - 'null' format: float description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay. example: 0.5 body: type: object description: Message body for RCS and WhatsApp. RCS text messages use the text property. WhatsApp messages contain the `whatsapp_message` object from the send request. properties: text: type: string description: RCS text message. additionalProperties: true template_id: type: string description: Telnyx ID of the WhatsApp template used by the message, when known. template_name: type: string description: Name of the WhatsApp template used by the message. Present for WhatsApp template messages. example: record_type: message direction: outbound id: 40385f64-5717-4562-b3fc-2c963f66afa6 type: MMS messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18445550001' carrier: TELNYX LLC line_type: VoIP to: - phone_number: '+18665550001' status: queued carrier: T-MOBILE USA, INC. line_type: Wireless cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: - url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png content_type: null sha256: null size: null webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] wait_seconds: 0.5 MessagingProfile: type: object properties: record_type: description: Identifies the type of the resource. type: string enum: - messaging_profile readOnly: true id: description: Identifies the type of resource. type: string format: uuid readOnly: true mms_fall_back_to_sms: description: enables SMS fallback for MMS messages. type: boolean default: false mms_transcoding: description: enables automated resizing of MMS media. type: boolean default: false name: description: A user friendly name for the messaging profile. type: string enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean webhook_url: description: The URL where webhooks related to this messaging profile will be sent. type: - string - 'null' format: url webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. type: - string - 'null' format: url webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. type: string enum: - '1' - '2' - '2010-04-01' health_webhook_url: description: 'DEPRECATED: health check url service checking' type: - string - 'null' format: url whitelisted_destinations: description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. type: array items: description: ISO 3166-1 alpha-2 country code. type: string pattern: ^[A-Z]{2}$ created_at: description: ISO 8601 formatted date indicating when the resource was created. type: string format: date-time readOnly: true updated_at: description: ISO 8601 formatted date indicating when the resource was updated. type: string format: date-time readOnly: true v1_secret: description: Secret used to authenticate with v1 endpoints. type: string number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. type: string pattern: ^[0-9]+(?:\.[0-9]+)?$ daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean redaction_enabled: description: Indicates whether message content redaction is enabled for this profile. type: boolean default: false redaction_level: description: Determines how much information is redacted in messages for privacy or compliance purposes. type: integer default: 2 mobile_only: description: Send messages only to mobile phone numbers. type: boolean default: false smart_encoding: description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean default: false organization_id: type: string description: The organization that owns this messaging profile. ai_assistant_id: type: - string - 'null' description: The AI assistant ID associated with this messaging profile. example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000 resource_group_id: type: - string - 'null' description: The resource group ID associated with this messaging profile. example: record_type: messaging_profile id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Profile for Messages webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks enabled: true webhook_api_version: '2' whitelisted_destinations: - US created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' number_pool_settings: toll_free_weight: 10 long_code_weight: 2 skip_unhealthy: false sticky_sender: true geomatch: false url_shortener_settings: domain: example.ex prefix: cmpny replace_blacklist_only: true send_webhooks: false v1_secret: rP1VamejkU2v0qIUxntqLW2c health_webhook_url: null mms_fall_back_to_sms: false mms_transcoding: false daily_spend_limit: '100.00' daily_spend_limit_enabled: false redaction_enabled: false redaction_level: 2 mobile_only: false MessagingProfileFeatures: type: - object - 'null' description: Telnyx product features the messaging customer can enable on the messaging profile. Keys map to individual feature flags; unknown keys are accepted and preserved for forward compatibility with rolling deployments. additionalProperties: true properties: ai_opt_out_detection_enabled: type: boolean description: Enables AI detection of inbound opt-out messages that do not follow the standard STOP/UNSTOP/HELP opt-out keyword pattern. When enabled, the messaging platform applies an AI model to identify non-standard opt-out requests (e.g. natural-language phrases) and treats them as opt-outs. example: ai_opt_out_detection_enabled: true MessagingSettings: properties: default_messaging_profile_id: type: string description: Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation. delivery_status_webhook_url: type: string description: The URL where webhooks related to delivery statused for assistant messages will be sent. conversation_inactivity_minutes: type: integer minimum: 1 maximum: 10000000 description: If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one. type: object MessagingUrlDomain: type: object properties: record_type: type: string id: type: string url_domain: type: string use_case: type: string example: record_type: messaging_url_domain id: 464bd54e-a328-4b11-a131-28e6793cb6f2 url_domain: http://example.com use_case: test Meta: properties: total_pages: type: integer total_results: type: integer page_number: type: integer page_size: type: integer type: object required: - total_pages - total_results - page_number - page_size title: Meta MetaResponse: type: object properties: url: type: string description: This should likely be a URL to the relevant documentation example: https://developers.telnyx.com/docs/overview/errors/10001 Metadata: type: object title: Metadata properties: total_pages: type: number description: Total number of pages based on pagination settings example: 13 format: integer total_results: type: number description: Total number of results example: 13 format: integer page_number: type: number description: Current Page based on pagination settings (included when defaults are used.) example: 3 format: integer page_size: type: number description: Number of results to return per page based on pagination settings (included when defaults are used.) example: 1 format: integer MetadataFieldMapping: type: object required: - local_field - parent_field properties: local_field: type: string parent_field: type: string MetadataInfo: type: object required: - total_record_types - last_updated properties: total_record_types: type: integer last_updated: type: string format: date-time MetadataOverviewResponse: type: object required: - record_types - query_parameters - meta properties: record_types: type: array items: $ref: '#/components/schemas/RecordTypeInfo' query_parameters: type: object additionalProperties: $ref: '#/components/schemas/QueryParameterInfo' description: Map of supported query parameter names to their definitions. meta: $ref: '#/components/schemas/MetadataInfo' MigrationParams: type: object properties: id: type: string description: Unique identifier for the data migration. readOnly: true source_id: type: string description: ID of the Migration Source from which to migrate data. target_bucket_name: type: string description: Bucket name to migrate the data into. Will default to the same name as the `source_bucket_name`. target_region: type: string description: Telnyx Cloud Storage region to migrate the data to. refresh: type: boolean description: If true, will continue to poll the source bucket to ensure new data is continually migrated over. last_copy: type: string format: date-time description: Time when data migration was last copied from the source. readOnly: true example: '2020-01-01T00:00:00Z' status: type: string enum: - pending - checking - migrating - complete - error - stopped readOnly: true description: Status of the migration. bytes_to_migrate: type: integer readOnly: true description: Total amount of data found in source bucket to migrate. bytes_migrated: type: integer readOnly: true description: Total amount of data that has been succesfully migrated. speed: type: integer readOnly: true description: Current speed of the migration. eta: type: string format: date-time readOnly: true description: Estimated time the migration will complete. example: '2020-01-01T00:00:00Z' created_at: type: string format: date-time description: Time when data migration was created readOnly: true example: '2020-01-01T00:00:00Z' required: - source_id - target_bucket_name - target_region MigrationSourceCoverageParams: type: object properties: provider: type: string enum: - aws description: Cloud provider from which to migrate data. source_region: type: string description: Provider region from which to migrate data. MigrationSourceParams: type: object properties: id: type: string description: Unique identifier for the data migration source. readOnly: true provider: type: string enum: - aws - telnyx description: Cloud provider from which to migrate data. Use 'telnyx' if you want to migrate data from one Telnyx bucket to another. source_region: type: string description: For intra-Telnyx buckets migration, specify the source bucket region in this field. provider_auth: type: object properties: access_key: type: string description: AWS Access Key. For Telnyx-to-Telnyx migrations, use your Telnyx API key here. secret_access_key: type: string description: AWS Secret Access Key. For Telnyx-to-Telnyx migrations, use your Telnyx API key here as well. bucket_name: type: string description: Bucket name to migrate the data from. required: - provider - provider_auth - bucket_name MinimaxClone: type: object description: Upload-based voice clone using the Minimax provider. required: - audio_file - name - language - gender - provider properties: audio_file: type: string format: binary description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality, provide 5–10 seconds of clear, uninterrupted speech. Maximum size: 20MB.' name: type: string maxLength: 255 description: Name for the voice clone. language: type: string pattern: ^([Aa]uto|[a-z]{2,3}(-[A-Za-z0-9]{2,8})*)$ description: ISO 639-1 language code from the Minimax language set. gender: type: string enum: - male - female - neutral description: Gender of the voice clone. ref_text: type: string description: Optional transcript of the audio file. Providing this improves clone quality. label: type: string description: Optional custom label describing the voice style. model_id: type: - string - 'null' enum: - speech-2.8-turbo - null description: TTS model identifier. Nullable — defaults to speech-2.8-turbo. provider: type: string enum: - minimax - Minimax description: Voice synthesis provider. Must be `minimax`. MinimaxDesignClone: type: object description: Create a voice clone from a voice design using the Minimax provider. required: - name - voice_design_id - language - gender - provider properties: name: type: string minLength: 1 maxLength: 255 description: Name for the voice clone. voice_design_id: type: string format: uuid description: UUID of the source voice design to clone. language: type: string description: ISO 639-1 language code for the clone. Supports the Minimax language set. gender: type: string enum: - male - female - neutral description: Gender of the voice clone. provider: type: string enum: - minimax - Minimax description: Voice synthesis provider. Must be `minimax`. example: name: clone-narrator voice_design_id: 550e8400-e29b-41d4-a716-446655440000 language: en gender: male provider: minimax MinimaxProviderParams: type: object description: Minimax provider-specific parameters. properties: speed: type: number format: float description: Speech speed multiplier. vol: type: number format: float description: Volume level. pitch: type: integer description: Pitch adjustment. response_format: type: string description: Audio output format. language_boost: type: string description: Language code to boost pronunciation for. MinimaxVoiceSettings: type: object title: Minimax Voice Settings properties: type: type: string enum: - minimax description: Voice settings provider type speed: description: Speech speed multiplier. Default is 1.0. type: number format: float example: 1.0 default: 1.0 vol: description: Speech volume multiplier. Default is 1.0. type: number format: float example: 1.0 default: 1.0 pitch: description: Voice pitch adjustment. Default is 0. type: integer example: 0 default: 0 language_boost: type: - string - 'null' description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. enum: - null - auto - Chinese - Chinese,Yue - English - Arabic - Russian - Spanish - French - Portuguese - German - Turkish - Dutch - Ukrainian - Vietnamese - Indonesian - Japanese - Italian - Korean - Thai - Polish - Romanian - Greek - Czech - Finnish - Hindi - Bulgarian - Danish - Hebrew - Malay - Persian - Slovak - Swedish - Croatian - Filipino - Hungarian - Norwegian - Slovenian - Catalan - Nynorsk - Tamil - Afrikaans default: null required: - type MissionData: properties: mission_id: type: string format: uuid title: Mission Id name: type: string title: Name description: title: Description type: string model: title: Model type: string instructions: title: Instructions type: string execution_mode: $ref: '#/components/schemas/ExecutionMode' metadata: title: Metadata additionalProperties: true type: object created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At type: object required: - mission_id - name - execution_mode - created_at - updated_at title: MissionData MissionResponse: properties: data: $ref: '#/components/schemas/MissionData' type: object required: - data title: MissionResponse MissionRunData: properties: run_id: type: string format: uuid title: Run Id mission_id: type: string format: uuid title: Mission Id status: $ref: '#/components/schemas/RunStatus' input: title: Input additionalProperties: true type: object started_at: type: string format: date-time title: Started At finished_at: title: Finished At type: string format: date-time result_summary: title: Result Summary type: string result_payload: title: Result Payload additionalProperties: true type: object error: title: Error type: string metadata: title: Metadata additionalProperties: true type: object updated_at: type: string format: date-time title: Updated At type: object required: - run_id - mission_id - status - started_at - updated_at title: MissionRunData MissionRunResponse: properties: data: $ref: '#/components/schemas/MissionRunData' type: object required: - data title: MissionRunResponse MissionRunsListResponse: properties: data: items: $ref: '#/components/schemas/MissionRunData' type: array title: Data meta: $ref: '#/components/schemas/Meta' type: object required: - data - meta title: MissionRunsListResponse MissionsListResponse: properties: data: items: $ref: '#/components/schemas/MissionData' type: array title: Data meta: $ref: '#/components/schemas/Meta' type: object required: - data - meta title: MissionsListResponse MnoMetadata: title: MnoMetadata type: object additionalProperties: true properties: '10999': $ref: '#/components/schemas/MnoMetadataItem' MnoMetadataItem: title: MnoMetadataItem type: object required: - qualify - mno - noEmbeddedLink - reqSubscriberHelp - reqSubscriberOptout - mnoReview - noEmbeddedPhone - mnoSupport - reqSubscriberOptin - minMsgSamples properties: qualify: type: boolean mno: type: string noEmbeddedLink: type: boolean reqSubscriberHelp: type: boolean reqSubscriberOptout: type: boolean mnoReview: type: boolean noEmbeddedPhone: type: boolean mnoSupport: type: boolean reqSubscriberOptin: type: boolean minMsgSamples: type: integer example: 1 MobileCountryCode: type: string description: Mobile Country Code. example: '311' MobileNetworkOperator: type: object title: MobileNetworkOperator properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string description: Identifies the type of the resource. readOnly: true example: mobile_network_operator name: description: The network operator name. type: string example: AT&T Mobility (USACG) tadig: type: string description: TADIG stands for Transferred Account Data Interchange Group. The TADIG code is a unique identifier for network operators in GSM mobile networks. example: USACG country_code: type: string description: The mobile operator two-character (ISO 3166-1 alpha-2) origin country code. example: US mcc: type: string description: 'MCC stands for Mobile Country Code. It''s a three decimal digit that identifies a country.

This code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code.' example: '310' mnc: type: string description: "MNC stands for Mobile Network Code. It's a two to three decimal digits that identify a network.

\n\ \ This code is commonly seen joined with a Mobile Country Code (MCC) in a tuple that allows identifying a carrier\ \ known as PLMN (Public Land Mobile Network) code." example: '410' network_preferences_enabled: type: boolean description: Indicate whether the mobile network operator can be set as preferred in the Network Preferences API. readOnly: true example: true MobileNetworkOperatorPreferencesResponse: description: '' type: object properties: mobile_network_operator_id: type: string format: uuid description: The mobile network operator resource identification UUID. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 mobile_network_operator_name: type: string description: The mobile network operator resource name. example: AT&T Mobility (USACG) priority: type: integer description: It determines what is the priority of a specific network operator that should be assumed by a SIM card when connecting to a network. The highest priority is 0, the second highest is 1 and so on. example: 0 MobileNetworkOperatorsPreferencesResponse: type: array description: A list of mobile network operators and the priority that should be applied when the SIM is connecting to the network. items: $ref: '#/components/schemas/MobileNetworkOperatorPreferencesResponse' MobilePhoneNumber: type: object properties: id: type: string description: Identifies the resource. readOnly: true record_type: type: string description: Identifies the type of the resource. example: mobile_phone_number readOnly: true phone_number: type: string description: The +E.164-formatted phone number. readOnly: true sim_card_id: type: string description: The ID of the SIM card associated with this number. format: uuid readOnly: true status: type: string description: The status of the phone number. readOnly: true connection_id: type: - string - 'null' description: The ID of the connection associated with this number. x-format: int64 connection_name: type: - string - 'null' description: The name of the connection. readOnly: true connection_type: type: - string - 'null' description: The type of the connection. readOnly: true mobile_voice_enabled: type: boolean description: Indicates if mobile voice is enabled. readOnly: true tags: type: array items: type: string description: A list of tags associated with the number. customer_reference: type: - string - 'null' description: A customer reference string. created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was last updated. readOnly: true call_forwarding: type: object properties: call_forwarding_enabled: type: boolean forwards_to: type: - string - 'null' forwarding_type: type: - string - 'null' enum: - always - on-failure country_iso_alpha2: type: string description: The ISO 3166-1 alpha-2 country code of the number. readOnly: true noise_suppression: type: string description: The noise suppression setting. enum: - inbound - outbound - both - disabled inbound_call_screening: type: - string - 'null' description: The inbound call screening setting. enum: - disabled - reject_calls - flag_calls caller_id_name_enabled: type: boolean description: Indicates if caller ID name is enabled. call_recording: type: object properties: inbound_call_recording_enabled: type: boolean inbound_call_recording_channels: type: string enum: - single - dual inbound_call_recording_format: type: string enum: - wav - mp3 cnam_listing: type: object properties: cnam_listing_enabled: type: boolean cnam_listing_details: type: - string - 'null' outbound: type: object properties: interception_app_id: type: - string - 'null' description: The ID of the app that will intercept outbound calls. x-format: int64 interception_app_name: type: - string - 'null' description: The name of the app that will intercept outbound calls. readOnly: true inbound: type: object properties: interception_app_id: type: - string - 'null' description: The ID of the app that will intercept inbound calls. x-format: int64 interception_app_name: type: - string - 'null' description: The name of the app that will intercept inbound calls. readOnly: true MobilePhoneNumberUpdate: type: object properties: customer_reference: type: - string - 'null' connection_id: type: - string - 'null' noise_suppression: type: boolean inbound_call_screening: type: string enum: - disabled - reject_calls - flag_calls caller_id_name_enabled: type: boolean tags: type: array items: type: string inbound: type: object properties: interception_app_id: type: - string - 'null' description: The ID of the CallControl or TeXML Application that will intercept inbound calls. x-format: int64 outbound: type: object properties: interception_app_id: type: - string - 'null' description: The ID of the CallControl or TeXML Application that will intercept outbound calls. x-format: int64 call_forwarding: type: object properties: forwards_to: type: - string - 'null' forwarding_type: type: - string - 'null' enum: - always - on-failure call_forwarding_enabled: type: boolean cnam_listing: type: object properties: cnam_listing_enabled: type: boolean cnam_listing_details: type: - string - 'null' call_recording: type: object properties: inbound_call_recording_enabled: type: boolean inbound_call_recording_channels: type: string enum: - single - dual inbound_call_recording_format: type: string enum: - wav - mp3 MobilePhoneNumberWithMessagingSettings: type: object example: record_type: messaging_settings id: '2126210528794641864' phone_number: ++13127367407 messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' country_code: US type: longcode traffic_type: P2P messaging_product: P2P features: sms: domestic_two_way: true international_inbound: true international_outbound: true properties: record_type: type: string example: messaging_settings enum: - messaging_phone_number - messaging_settings description: Identifies the type of the resource. readOnly: true id: type: string description: Identifies the type of resource. readOnly: true phone_number: type: string description: +E.164 formatted phone number. readOnly: true x-format: e164 messaging_profile_id: type: - string - 'null' description: Unique identifier for a messaging profile. created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true country_code: type: string description: ISO 3166-1 alpha-2 country code. pattern: ^[A-Z]{2}$ example: US readOnly: true type: type: string description: The type of the phone number enum: - longcode readOnly: true traffic_type: type: string description: The messaging traffic or use case for which the number is currently configured. example: P2P readOnly: true messaging_product: type: string description: The messaging product that the number is registered to use example: P2P features: type: object readOnly: true properties: sms: $ref: '#/components/schemas/MessagingFeatureSet' organization_id: type: string description: The organization that owns this phone number. tags: type: array items: type: string description: Tags associated with this phone number. MobileVoiceConnection: type: object properties: id: type: string description: Identifies the resource. readOnly: true record_type: type: string description: Identifies the type of the resource. example: mobile_voice_connection enum: - mobile_voice_connection readOnly: true active: type: boolean description: Indicates if the connection is active. connection_name: type: string description: The name of the connection. tags: type: array items: type: string description: A list of tags associated with the connection. webhook_event_url: type: - string - 'null' description: The URL where webhooks are sent. webhook_event_failover_url: type: - string - 'null' description: The failover URL where webhooks are sent. webhook_api_version: type: - string - 'null' description: The API version for webhooks. enum: - '1' - '2' webhook_timeout_secs: type: - integer - 'null' description: The timeout for webhooks in seconds. outbound: type: object properties: channel_limit: type: - integer - 'null' outbound_voice_profile_id: type: - string - 'null' inbound: type: object properties: channel_limit: type: - integer - 'null' created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true MobileVoiceConnectionCreate: type: object required: [] properties: active: type: boolean default: true connection_name: type: string default: Telnyx Mobile Voice IMS webhook_event_url: type: - string - 'null' webhook_event_failover_url: type: - string - 'null' webhook_api_version: type: string enum: - '1' - '2' default: '2' webhook_timeout_secs: type: - integer - 'null' tags: type: array items: type: string outbound: type: object properties: channel_limit: type: integer outbound_voice_profile_id: type: string inbound: type: object properties: channel_limit: type: integer MobileVoiceConnectionUpdate: type: object required: [] properties: active: type: boolean connection_name: type: string webhook_event_url: type: - string - 'null' webhook_event_failover_url: type: - string - 'null' webhook_api_version: type: string enum: - '1' - '2' webhook_timeout_secs: type: integer tags: type: array items: type: string outbound: type: object properties: channel_limit: type: integer outbound_voice_profile_id: type: string inbound: type: object properties: channel_limit: type: integer ModelMetadata: type: object title: ModelMetadata description: Metadata for a model available on Telnyx Inference. Returned by `GET /v2/ai/openai/models` (and the deprecated `GET /v2/ai/models`). Open-source models live under their Hugging Face organization (e.g. `moonshotai/Kimi-K2.6`, `zai-org/GLM-5.1-FP8`, `MiniMaxAI/MiniMax-M2.7`); fine-tuned models are owned by the Telnyx organization that trained them. required: - id - created - owned_by - organization - context_length - languages - parameters - tier - license properties: id: type: string title: Id description: Model identifier. For open-source models, follows the `{organization}/{model_name}` convention from Hugging Face (e.g. `moonshotai/Kimi-K2.6`). example: moonshotai/Kimi-K2.6 object: type: string title: Object default: model description: Object type. Always `model`. created: type: string format: date-time title: Created description: Timestamp at which the model was registered on Telnyx Inference (ISO 8601). base_model: type: - string - 'null' title: Base Model description: Base model the fine-tuned model was trained from. Only set for fine-tuned models. owned_by: type: string title: Owned By description: Owner of the model. `Telnyx` for Telnyx-hosted open-source models, the upstream provider name for proxied models, or the Telnyx organization id for fine-tuned models. example: Telnyx organization: type: string title: Organization description: Organization that originally published the model, matching the prefix of `id` for open-source models. example: moonshotai task: type: string title: Task default: text-generation description: Primary task the model is intended for, e.g. `text-generation`, `audio-text-to-text`, `feature-extraction` (embeddings). example: text-generation context_length: type: integer title: Context Length description: Maximum total tokens (prompt + completion) supported by the model in a single request. example: 262144 max_completion_tokens: type: - integer - 'null' title: Max Completion Tokens description: Model-specific completion-token ceiling. For Chat Completions, this value clamps explicit output limits and the 8192 default when that default applies. Models excluded from the default leave an omitted or null output limit unset for the serving engine, even when this metadata declares a ceiling; see `ChatCompletionRequest.max_tokens` for the hosted default and exclusion lists. This field does not report the effective default. `null` means no separate completion ceiling is declared; input and output together must still fit `context_length`. languages: type: array title: Languages items: type: string description: ISO language codes the model supports (e.g. `en`, `es`). parameters: type: integer title: Parameters description: Total parameter count of the model. example: 1000000000000 parameters_str: type: - string - 'null' title: Parameters (human readable) description: Human-readable parameter count, e.g. `1.0T`, `753.9B`, `8B`. example: 1.0T tier: type: string title: Tier enum: - small - medium - large - unlisted description: Billing tier the model belongs to. Used together with `pricing` to determine cost per 1M tokens. license: type: string title: License description: License the model is distributed under, e.g. `Apache 2.0`, `MIT`, `Llama 3 Community License`. is_fine_tunable: type: boolean title: Is Fine Tunable default: false description: Whether the model can be used as a base for a fine-tuning job via `POST /v2/ai/fine_tuning/jobs`. recommended_for_assistants: type: boolean title: Recommended For Assistants default: false description: Whether Telnyx currently recommends this model as the LLM powering a Telnyx AI Assistant. is_vision_supported: type: boolean title: Is Vision Supported default: false description: Whether the model accepts image inputs in chat completions (multimodal vision support). description: type: - string - 'null' title: Description description: Short, human-readable summary of what the model is best suited for. pricing: type: object title: Pricing additionalProperties: type: string description: Mapping of token kind to price, as strings to preserve precision. Typical keys are `prompt`, `cached_prompt`, and `completion`. When pricing is available the block also includes `currency` (ISO 4217 code matching the account's configured billing currency) and `unit` (the denomination the prices are quoted in, currently always `1M_tokens` for token-priced models). example: prompt: '0.300000' completion: '1.200000' cached_prompt: '0.060000' currency: USD unit: 1M_tokens regions: type: array title: Regions items: type: string description: Public region names where the model is currently deployed (e.g. `us-central-1`, `eu-central-1`). example: - us-central-1 - us-east-1 service_tiers: type: array title: Service Tiers items: type: string enum: - default - priority - flex description: Service tiers supported by this Telnyx-hosted model. Use one of these values as `service_tier` in Chat Completions or Responses requests. This field is omitted for externally hosted models. ModelProvenance: type: object additionalProperties: false required: - model - provider properties: model: type: string provider: type: string ModelsResponse: properties: object: type: string title: Object default: list data: items: $ref: '#/components/schemas/ModelMetadata' type: array title: Data type: object required: - data title: ModelsResponse Money: type: number minimum: 0 maximum: 1000000000 multipleOf: 1.0e-06 description: USD, decimal precision at most 6 places; parse exactly to integer micro-USD, never binary float accounting. Monochrome: description: The flag to enable monochrome, true black and white fax results. type: boolean default: false MonthDetail: type: object properties: quantity: type: integer description: Number of items example: 10 mrc: type: string description: Monthly recurring charge amount as decimal string example: '25.50' otc: type: - string - 'null' description: One-time charge amount as decimal string example: '5.00' required: - quantity - mrc MonthlyChargesBreakdownResponse: type: object properties: data: $ref: '#/components/schemas/BreakdownData' required: - data MonthlyChargesSummaryResponse: type: object properties: data: $ref: '#/components/schemas/SummaryAndTotal' required: - data MutateInboxFiltersRequest: type: object properties: type: type: string enum: - allowlist - blocklist description: The list to change. entries: $ref: '#/components/schemas/InboxFilterEntryList' required: - type - entries Namespace: properties: id: type: string title: Id description: The namespace's unique identifier. name: type: string title: Name description: The namespace's name, used in the path. `default` exists for every organization. type: object required: - id - name title: Namespace description: An isolated memory store within your organization. NamespaceCreate: properties: name: type: string title: Name description: A name for the new namespace, unique within your organization. type: object required: - name title: NamespaceCreate NamespaceListResponse: properties: data: items: $ref: '#/components/schemas/Namespace' type: array title: Data type: object required: - data title: NamespaceListResponse NamespaceResponse: properties: data: $ref: '#/components/schemas/Namespace' type: object required: - data title: NamespaceResponse NamespaceSettings: properties: summary: $ref: '#/components/schemas/SummarySettings' description: Settings that shape this namespace's summaries. type: object title: NamespaceSettings description: A namespace's settings, grouped by what they affect. NamespaceSettingsPatch: properties: summary: anyOf: - $ref: '#/components/schemas/SummarySettingsPatch' - type: 'null' description: Summary settings to change. Omit to change nothing. type: object title: NamespaceSettingsPatch NamespaceSettingsResponse: properties: data: $ref: '#/components/schemas/NamespaceSettings' type: object required: - data title: NamespaceSettingsResponse Network: allOf: - $ref: '#/components/schemas/Record' - type: object title: Network properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: network name: type: string description: A user specified name for the network. example: test network NetworkCoverage: type: object title: NetworkCoverage properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: network_coverage location: $ref: '#/components/schemas/netapps_Location_17904fcfbc' available_services: type: array description: List of interface types supported in this region. items: oneOf: - $ref: '#/components/schemas/AvailableService' NetworkCreate: allOf: - $ref: '#/components/schemas/Network' - type: object title: NetworkCreate required: - name NetworkInterface: allOf: - $ref: '#/components/schemas/Record' - $ref: '#/components/schemas/Interface' - $ref: '#/components/schemas/RegionOut' - type: object title: NetworkInterface properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: network_interface type: type: string description: Identifies the type of the interface. readOnly: true example: wireguard_interface NewBillingGroup: type: object properties: name: type: string description: A name for the billing group example: name: string NewLedgerBillingGroupReport: type: object properties: year: type: integer description: Year of the ledger billing group report example: 2019 month: type: integer description: Month of the ledger billing group report example: 10 example: year: 2019 month: 10 NewParticipantResource: type: object title: New participant resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: false conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 end_conference_on_exit: false hold: false muted: false status: completed uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b call_sid: type: string description: The identifier of this participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: type: boolean description: Whether the participant is coaching another call. example: false coaching_call_sid: type: string description: The identifier of the coached participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ end_conference_on_exit: type: boolean description: Whether the conference ends when the participant leaves. example: false hold: type: boolean description: Whether the participant is on hold. example: false muted: type: boolean description: Whether the participant is muted. example: false status: type: string description: The status of the participant's call in the conference. enum: - connecting - connected - completed example: connected uri: type: string description: The relative URI for this participant. example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json conference_sid: type: string format: uuid description: The unique identifier for the conference. example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 NodePosition: description: '2D coordinates for a node, used by authoring UIs to lay out the graph. Purely a presentation aid. The runtime ignores `position`; it round-trips through the API so frontends can persist the graph layout customers arrange in the editor.' properties: x: description: Horizontal coordinate in the authoring canvas. title: X type: number y: description: Vertical coordinate in the authoring canvas. title: Y type: number required: - x - y title: NodePosition type: object NodeTarget: description: 'Edge target referencing another node within the same flow. The runtime transitions the active node to `node_id` and continues processing within the current assistant''s flow.' properties: node_id: description: ID of the node this edge transitions into. example: n_billing title: Node Id type: string type: const: node title: Type type: string required: - type - node_id title: NodeTarget type: object NoiseSuppressionDirection: type: string title: Noise Suppression Direction description: The direction of the audio stream to be noise suppressed. enum: - inbound - outbound - both default: inbound example: outbound NoiseSuppressionEngine: type: string title: Noise Suppression Engine description: "The engine to use for noise suppression.\nFor backward compatibility, engines A, B, C, and D are also\ \ supported, but are deprecated:\n A - Denoiser\n B - DeepFilterNet\n C - Krisp\n D - AiCoustics" enum: - Denoiser - DeepFilterNet - Krisp - AiCoustics - aic_l_quail - aic_l_rook - aic_s_quail - aic_s_rook - quail_voice_focus_s - quail_voice_focus_xs default: Denoiser example: Denoiser NoiseSuppressionEngineConfig: type: object title: Noise Suppression Engine Configuration description: Configuration parameters for noise suppression engines. Different engines support different parameters. properties: attenuation_limit: type: integer description: The attenuation limit for noise suppression (0-100). Only applicable for DeepFilterNet. minimum: 0 maximum: 100 default: 100 example: 100 mode: type: string description: Processing mode. Only applicable for DeepFilterNet. enum: - standard - advanced example: standard model: type: string description: The Krisp model to use. Only applicable for Krisp. enum: - krisp-viva-tel-v2.kef - krisp-viva-tel-lite-v1.kef - krisp-viva-pro-v1.kef - krisp-viva-ss-v1.kef example: krisp-viva-tel-v2.kef suppression_level: type: number description: Suppression level (0.0-100.0). Only applicable for Krisp. minimum: 0.0 maximum: 100.0 example: 50.0 family: type: string description: AiCoustics model family. 'sparrow' optimized for human-to-human calls, 'quail' optimized for Voice AI/STT. Only applicable for AiCoustics. enum: - sparrow - quail example: sparrow size: type: string description: AiCoustics model size. 's' and 'l' work with both families. 'xs' and 'xxs' are sparrow-only. 'vf_l' and 'vf_1_1_l' are quail-only. Only applicable for AiCoustics. enum: - s - l - xs - xxs - vf_l - vf_1_1_l example: l enhancement_level: type: number description: Enhancement intensity (0.0-1.0). Only applicable for AiCoustics. minimum: 0.0 maximum: 1.0 example: 0.5 voice_gain: type: number description: Voice gain multiplier (0.1-4.0). Only applicable for AiCoustics. minimum: 0.1 maximum: 4.0 example: 1.0 NoiseSuppressionEnginesListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/noise-suppression-engines_NoiseSuppressionEngine' required: - data NoiseSuppressionStart: type: object title: Noise Suppression Start Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 direction: $ref: '#/components/schemas/NoiseSuppressionDirection' noise_suppression_engine: $ref: '#/components/schemas/NoiseSuppressionEngine' noise_suppression_engine_config: $ref: '#/components/schemas/NoiseSuppressionEngineConfig' example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 direction: both noise_suppression_engine: DeepFilterNet noise_suppression_engine_config: attenuation_limit: 100 NoiseSuppressionStop: type: object title: Noise Suppression Stop Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 NotFoundError: properties: code: type: string title: Telnyx error code detail: type: string title: Error details title: type: string title: Error title type: object required: - detail title: NotFoundError NotificationChannel: description: A Notification Channel properties: id: type: string description: A UUID. readOnly: true example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a notification_profile_id: type: string description: A UUID reference to the associated Notification Profile. example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a channel_type_id: type: string description: A Channel Type ID enum: - sms - voice - email - webhook channel_destination: type: string description: The destination associated with the channel type. example: '+13125550000' created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2019-10-15T10:07:15.527Z' readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2019-10-15T10:07:15.527Z' readOnly: true type: object NotificationEvent: description: An object representing the available notifications. properties: id: type: string description: A UUID. readOnly: true example: d5c395cd-9864-4609-b5e2-3f9fd4ce201a name: type: string description: A human readable name. example: Emergency Number Dialed notification_category: type: string example: Calls enabled: type: boolean example: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2019-10-15T10:07:15.527Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2019-10-15T10:07:15.527Z' type: object NotificationEventCondition: properties: id: type: string description: A UUID. readOnly: true example: 70c7c5cb-dce2-4124-accb-870d39dbe852 name: type: string example: from phone number description: type: string example: When emergency number dialed from phone number X notification_event_id: type: string example: d5c395cd-9864-4609-b5e2-3f9fd4ce201a associated_record_type: type: string enum: - account - phone_number example: phone_number parameters: type: array items: type: object properties: name: type: string example: phone_number optional: type: boolean example: false data_type: type: string example: string enabled: type: boolean example: true allow_multiple_channels: description: Dictates whether a notification channel id needs to be provided when creating a notficiation setting. type: boolean example: false asynchronous: description: Dictates whether a notification setting will take effect immediately. type: boolean example: true supported_channels: description: Dictates the supported notification channel types that can be emitted. type: array items: type: string example: - webhook - sms - email - voice created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2019-10-15T10:07:15.527Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2019-10-15T10:07:15.527Z' type: object NotificationProfile: description: A Collection of Notification Channels properties: id: type: string description: A UUID. readOnly: true example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a name: type: string description: A human readable name. created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2019-10-15T10:07:15.527Z' readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2019-10-15T10:07:15.527Z' readOnly: true type: object NotificationSetting: properties: id: type: string description: A UUID. readOnly: true example: 8eb5b5f9-5893-423c-9f15-b487713d44d4 notification_event_condition_id: type: string description: A UUID reference to the associated Notification Event Condition. example: 70c7c5cb-dce2-4124-accb-870d39dbe852 notification_profile_id: type: string description: A UUID reference to the associated Notification Profile. example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a associated_record_type: type: string example: phone_number readOnly: true associated_record_type_value: type: string example: '+13125550000' readOnly: true status: type: string description: Most preferences apply immediately; however, other may needs to propagate. enum: - enabled - enable-received - enable-pending - enable-submtited - delete-received - delete-pending - delete-submitted - deleted example: enable-received readOnly: true notification_channel_id: type: string description: A UUID reference to the associated Notification Channel. example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a parameters: type: array items: type: object properties: name: type: string example: phone_number value: type: string example: '+13125550000' created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2019-10-15T10:07:15.527Z' readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2019-10-15T10:07:15.527Z' readOnly: true type: object NumberBlockOrder: properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true record_type: type: string example: number_block_order readOnly: true starting_number: type: string description: Starting phone number block example: '+19705555000' range: type: integer description: The phone number range included in the block. example: 10 phone_numbers_count: type: integer description: The count of phone numbers in the number order. example: 1 readOnly: true connection_id: type: string example: '346789098765567' description: Identifies the connection associated to all numbers in the phone number block. messaging_profile_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated to all numbers in the phone number block. status: type: string enum: - pending - success - failure example: success description: The status of the order. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the number order was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number order was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true requirements_met: type: boolean description: True if all requirements are met for every phone number, false otherwise. example: true readOnly: true example: id: 12ade33a-21c0-473b-b055-b3c836e1c292 starting_number: '+19705555000' range: 10 record_type: number_block_order connection_id: '346789098765567' messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600 phone_numbers_count: 10 status: pending customer_reference: MY REF 001 created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' requirements_met: true type: object NumberBreakdownResult: type: object properties: tn: type: string description: Phone number example: '+15551234567' charge_type: type: string description: Type of charge for the number example: local service_owner_user_id: type: string description: User ID of the service owner example: 0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8 service_owner_email: type: string format: email description: Email address of the service owner example: user@example.com services: type: array items: $ref: '#/components/schemas/ServiceDetail' description: List of services associated with this number required: - tn - charge_type - service_owner_user_id - service_owner_email - services NumberHealthMetrics: type: object required: - message_count - inbound_outbound_ratio - success_ratio - spam_ratio description: 'High level health metrics about the number and it''s messaging sending patterns. ' properties: message_count: type: integer description: The number of messages analyzed for the health metrics. inbound_outbound_ratio: type: number format: float description: The ratio of messages received to the number of messages sent. success_ratio: type: number format: float description: The ratio of messages sucessfully delivered to the number of messages attempted. spam_ratio: type: number format: float description: The ratio of messages blocked for spam to the number of messages attempted. example: message_count: 10 inbound_outbound_ratio: 1 success_ratio: 2 spam_ratio: 10 NumberLiteralExpression: description: Constant numeric value (float; integers are accepted and stored as float). example: type: number_literal value: 18 properties: type: const: number_literal title: Type type: string value: description: Literal numeric value. example: 18 title: Value type: number required: - type - value title: NumberLiteralExpression type: object NumberLookupRecord: type: object title: NumberLookup properties: record_type: type: string description: Identifies the type of record example: number_lookup country_code: type: string description: Region code that matches the specific country calling code example: US national_format: type: string description: Hyphen-separated national number, preceded by the national destination code (NDC), with a 0 prefix, if an NDC is found example: (0312) 945-7420 phone_number: type: string description: E164-formatted phone number example: '+13129457420' fraud: type: - string - 'null' description: Unused example: null carrier: $ref: '#/components/schemas/Carrier' caller_name: $ref: '#/components/schemas/CallerName' portability: $ref: '#/components/schemas/Portability' NumberOrder: title: Number Order With Phone Numbers type: object properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true record_type: type: string example: number_order readOnly: true phone_numbers_count: type: integer description: The count of phone numbers in the number order. example: 1 readOnly: true connection_id: type: string example: '346789098765567' description: Identifies the connection associated with this phone number. messaging_profile_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. billing_group_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. phone_numbers: type: array items: description: The unique phone numbers given as arguments in the job creation. $ref: '#/components/schemas/PhoneNumbersJobPhoneNumber' sub_number_orders_ids: type: array items: type: string status: type: string enum: - pending - success - failure description: The status of the order. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the number order was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number order was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true requirements_met: type: boolean description: True if all requirements are met for every phone number, false otherwise. example: true readOnly: true NumberOrderPhoneNumber: properties: id: type: string format: uuid example: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 readOnly: true record_type: type: string example: number_order_phone_number readOnly: true phone_number: type: string example: '+19705555098' order_request_id: type: string format: uuid example: dc8e4d67-33a0-4cbb-af74-7b58f05bd495 sub_number_order_id: type: string format: uuid example: dc8e4d67-33a0-4cbb-af74-7b58f05bd496 country_code: type: string example: US phone_number_type: type: string example: local enum: - local - toll_free - mobile - national - shared_cost - landline regulatory_requirements: type: array items: $ref: '#/components/schemas/SubNumberOrderRegulatoryRequirementWithValue' requirements_met: type: boolean description: True if all requirements are met for a phone number, false otherwise. example: true readOnly: true status: type: string enum: - pending - success - failure description: The status of the phone number in the order. readOnly: true bundle_id: type: - string - 'null' format: uuid example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d readOnly: true locality: type: string example: San Francisco deadline: type: string format: date-time example: '2024-05-31T11:14:00Z' requirements_status: type: string enum: - pending - approved - cancelled - deleted - requirement-info-exception - requirement-info-pending - requirement-info-under-review description: Status of requirements (if applicable) readOnly: true is_block_number: type: boolean example: false type: object NumberOrderPhoneNumberRequirementGroupResponse: type: object properties: status: type: string example: pending order_request_id: type: string format: uuid example: a11d58fe-88a4-494a-b752-8dea411993c6 country_code: type: string example: AT is_block_number: type: boolean example: false regulatory_requirements: type: array items: type: object properties: requirement_id: type: string format: uuid field_value: type: string example: '1234567890' field_type: type: string example: textual status: type: string example: pending-approval locality: type: string example: AUSTRIA phone_number_type: type: string example: toll_free bundle_id: type: - string - 'null' format: uuid sub_number_order_id: type: string format: uuid example: f826ed66-b27c-4340-9dc0-57dc3459f1bd deadline: type: string format: date-time requirements_status: type: string example: requirement-info-under-review id: type: string format: uuid example: 613d517a-0432-4bae-a785-c11033bd0985 phone_number: type: string example: '+43800300238' requirements_met: type: boolean example: false record_type: type: string example: number_order_phone_number NumberOrderWebhookEvent: type: object title: Number Order Event properties: data: type: object properties: event_type: type: string enum: - number_order.complete example: number_order.complete description: The type of event being sent id: type: string format: uuid example: d578b093-a0e7-4b64-b0d3-6b689a6ff170 description: Unique identifier for the event occurred_at: type: string format: date-time example: '2025-08-22T16:23:54.496464Z' description: ISO 8601 timestamp of when the event occurred payload: $ref: '#/components/schemas/NumberOrderWithPhoneNumbers' record_type: type: string example: event description: Type of record required: - event_type - id - occurred_at - payload - record_type meta: type: object properties: attempt: type: integer example: 1 description: Webhook delivery attempt number delivered_to: type: string format: uri example: https://sample-api.com/webhook description: URL where the webhook was delivered required: - attempt - delivered_to required: - data - meta NumberOrderWebhookPayload: title: Number Order Webhook Payload type: object properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 record_type: type: string example: number_order phone_numbers_count: type: integer description: The count of phone numbers in the number order. example: 1 connection_id: type: string example: '346789098765567' description: Identifies the connection associated with this phone number. messaging_profile_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. billing_group_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. phone_numbers: type: array items: description: The unique phone numbers given as arguments in the job creation. $ref: '#/components/schemas/NumberOrderWebhookPhoneNumber' sub_number_orders_ids: type: array items: type: string status: type: string enum: - pending - success - failure description: The status of the order. customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the number order was created. example: '2018-01-01T00:00:00.000000Z' updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number order was updated. example: '2018-01-01T00:00:00.000000Z' requirements_met: type: boolean description: True if all requirements are met for every phone number, false otherwise. example: true description: Number order data delivered in a webhook. Server-generated fields are valid in this outbound webhook request. NumberOrderWebhookPhoneNumber: properties: id: type: string format: uuid example: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 record_type: type: string example: number_order_phone_number phone_number: type: string example: '+19705555098' country_iso_alpha2: type: string description: The ISO 3166-1 alpha-2 country code of the phone number. example: US regulatory_requirements: type: array items: $ref: '#/components/schemas/NumberOrderWebhookRegulatoryRequirement' requirements_met: type: boolean description: True if all requirements are met for a phone number, false otherwise. example: true requirements_status: type: string enum: - pending - approved - cancelled - deleted - requirement-info-exception - requirement-info-pending - requirement-info-under-review description: Status of document requirements (if applicable) status: type: string enum: - pending - success - failure description: The status of the phone number in the order. bundle_id: type: string format: uuid example: bc8e4d67-33a0-4cbb-af74-7b58f05bd494 phone_number_type: type: string enum: - local - mobile - national - shared_cost - toll_free description: Phone number type country_code: type: string example: US description: Country code of the phone number example: id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 record_type: number_order_phone_number phone_number: '+19705555098' bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd474 regulatory_requirements: - record_type: phone_number_regulatory_requirement requirement_id: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_value: 45f45a04-b4be-4592-95b1-9306b9db2b21 field_type: address requirements_met: true status: success type: object title: Number Order Webhook Phone Number description: Phone number data delivered in a number order webhook. NumberOrderWebhookRegulatoryRequirement: properties: record_type: type: string example: phone_number_regulatory_requirement requirement_id: type: string format: uuid description: Unique id for a requirement. example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_type: type: string enum: - textual - datetime - address - document example: address field_value: type: string description: The value of the requirement, this could be an id to a resource or a string value. example: 45f45a04-b4be-4592-95b1-9306b9db2b21 type: object title: Number Order Webhook Regulatory Requirement description: Regulatory requirement data delivered in a number order webhook. NumberOrderWithPhoneNumbers: title: NumberOrder type: object properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true record_type: type: string example: number_order readOnly: true phone_numbers_count: type: integer description: The count of phone numbers in the number order. example: 1 readOnly: true connection_id: type: string example: '346789098765567' description: Identifies the connection associated with this phone number. messaging_profile_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. billing_group_id: type: string example: abc85f64-5717-4562-b3fc-2c9600 description: Identifies the messaging profile associated with the phone number. phone_numbers: type: array items: description: The unique phone numbers given as arguments in the job creation. $ref: '#/components/schemas/PhoneNumber' sub_number_orders_ids: type: array items: type: string status: type: string enum: - pending - success - failure description: The status of the order. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the number order was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number order was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true requirements_met: type: boolean description: True if all requirements are met for every phone number, false otherwise. example: true readOnly: true NumberPoolSettings: type: - object - 'null' required: - toll_free_weight - long_code_weight - skip_unhealthy description: 'Number Pool allows you to send messages from a pool of numbers of different types, assigning weights to each type. The pool consists of all the long code and toll free numbers assigned to the messaging profile. To disable this feature, set the object field to `null`. ' properties: toll_free_weight: type: number example: 10 description: 'Defines the probability weight for a Toll Free number to be selected when sending a message. The higher the weight the higher the probability. The sum of the weights for all number types does not necessarily need to add to 100. Weight must be a non-negative number, and when equal to zero it will remove the number type from the pool. ' long_code_weight: type: number example: 1 description: 'Defines the probability weight for a Long Code number to be selected when sending a message. The higher the weight the higher the probability. The sum of the weights for all number types does not necessarily need to add to 100. Weight must be a non-negative number, and when equal to zero it will remove the number type from the pool. ' skip_unhealthy: type: boolean example: true description: 'If set to true all unhealthy numbers will be automatically excluded from the pool. Health metrics per number are calculated on a regular basis, taking into account the deliverability rate and the amount of messages marked as spam by upstream carriers. Numbers with a deliverability rate below 25% or spam ratio over 75% will be considered unhealthy. ' sticky_sender: type: boolean default: false description: 'If set to true, Number Pool will try to choose the same sending number for all messages to a particular recipient. If the sending number becomes unhealthy and `skip_unhealthy` is set to true, a new number will be chosen. ' geomatch: type: boolean default: false description: 'If set to true, Number Pool will try to choose a sending number with the same area code as the destination number. If there are no such numbers available, a nunber with a different area code will be chosen. Currently only NANP numbers are supported. ' example: toll_free_weight: 10 long_code_weight: 1 skip_unhealthy: true sticky_sender: false geomatch: false NumberReputationExternalVerificationStatusChangedEvent: type: object required: - data - meta properties: data: type: object required: - record_type - id - occurred_at - event_type - payload properties: record_type: type: string enum: - event example: event id: type: string format: uuid description: Identifies the event; the same id is reused if the event is redelivered. example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: type: string format: date-time example: '2026-10-05T07:00:12.521992Z' event_type: type: string enum: - number_reputation.external_verification.status_changed example: number_reputation.external_verification.status_changed payload: type: object required: - record_type - enterprise_id - status - reviewed_at properties: record_type: type: string enum: - reputation_external_verification example: reputation_external_verification enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 status: type: string enum: - approved - rejected description: 'The review outcome. `pending` is never delivered: the event is sent only once the proof is reviewed.' example: approved rejection_reason: type: - string - 'null' description: Set only when `status` is `rejected`. example: null reviewed_at: type: string format: date-time example: '2026-10-06T14:03:10+00:00' description: 'When the review decision was made. Always set: this event is only sent after a review.' meta: type: object properties: attempt: type: integer example: 1 delivered_to: type: string format: uri example: https://example.com/webhooks/telnyx required: - attempt - delivered_to example: data: record_type: event id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-10-05T07:00:12.521992Z' event_type: number_reputation.external_verification.status_changed payload: record_type: reputation_external_verification enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6 status: approved rejection_reason: null reviewed_at: '2026-10-06T14:03:10+00:00' meta: attempt: 1 delivered_to: https://example.com/webhooks/telnyx NumberReputationNumberFlaggedEvent: type: object required: - data - meta properties: data: type: object required: - record_type - id - occurred_at - event_type - payload properties: record_type: type: string enum: - event example: event id: type: string format: uuid description: Identifies the event; the same id is reused if the event is redelivered. example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: type: string format: date-time example: '2026-10-05T07:00:12.521992Z' event_type: type: string enum: - number_reputation.number.flagged example: number_reputation.number.flagged payload: type: object required: - record_type - phone_number - enterprise_id - source - ownership_status - flag_reason - confirm_by properties: record_type: type: string enum: - reputation_phone_number example: reputation_phone_number phone_number: type: string example: '+13125550142' enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 source: $ref: '#/components/schemas/ReputationNumberSource' ownership_status: type: string enum: - pending_confirmation example: pending_confirmation flag_reason: type: string enum: - carrier_changed - reverification_due description: '`carrier_changed`: the number moved to a different carrier. `reverification_due`: the periodic ownership re-verification is due.' example: carrier_changed confirm_by: type: string format: date-time description: Confirm ownership before this time or the number is removed (carrier change) or flagged (re-verification). example: '2026-10-08T07:00:00+00:00' meta: type: object properties: attempt: type: integer example: 1 delivered_to: type: string format: uri example: https://example.com/webhooks/telnyx required: - attempt - delivered_to example: data: record_type: event id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-10-05T07:00:12.521992Z' event_type: number_reputation.number.flagged payload: record_type: reputation_phone_number phone_number: '+13125550142' enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6 source: external ownership_status: pending_confirmation flag_reason: carrier_changed confirm_by: '2026-10-08T07:00:00+00:00' meta: attempt: 1 delivered_to: https://example.com/webhooks/telnyx NumberReputationNumberRemovedEvent: type: object required: - data - meta properties: data: type: object required: - record_type - id - occurred_at - event_type - payload properties: record_type: type: string enum: - event example: event id: type: string format: uuid description: Identifies the event; the same id is reused if the event is redelivered. example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: type: string format: date-time example: '2026-10-05T07:00:12.521992Z' event_type: type: string enum: - number_reputation.number.removed example: number_reputation.number.removed payload: type: object required: - record_type - phone_number - enterprise_id - source - ownership_status - removal_reason - removed_at properties: record_type: type: string enum: - reputation_phone_number example: reputation_phone_number phone_number: type: string example: '+13125550142' enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 source: $ref: '#/components/schemas/ReputationNumberSource' ownership_status: type: string enum: - removed example: removed removal_reason: type: string enum: - ported_away - unconfirmed_ownership - reassigned - customer_reported description: '`ported_away`: you confirmed you no longer own it after a carrier change. `unconfirmed_ownership`: the confirmation deadline passed. `reassigned`: the number was reported as permanently disconnected. `customer_reported`: you reported that you no longer own it. Removing a number yourself with `DELETE` sends no event.' example: unconfirmed_ownership removed_at: type: string format: date-time example: '2026-10-09T07:00:03+00:00' meta: type: object properties: attempt: type: integer example: 1 delivered_to: type: string format: uri example: https://example.com/webhooks/telnyx required: - attempt - delivered_to example: data: record_type: event id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-10-05T07:00:12.521992Z' event_type: number_reputation.number.removed payload: record_type: reputation_phone_number phone_number: '+13125550142' enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6 source: external ownership_status: removed removal_reason: unconfirmed_ownership removed_at: '2026-10-09T07:00:03+00:00' meta: attempt: 1 delivered_to: https://example.com/webhooks/telnyx NumberReservation: properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true record_type: type: string example: number_reservation readOnly: true phone_numbers: type: array items: $ref: '#/components/schemas/ReservedPhoneNumber' status: type: string enum: - pending - success - failure description: The status of the entire reservation. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the numbers reservation was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true errors: type: string description: Errors the reservation could happen upon example: Number is already on hold readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number reservation was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true example: id: 12ade33a-21c0-473b-b055-b3c836e1c292 record_type: number_reservation phone_numbers: - id: 12ade33a-21c0-473b-b055-b3c836e1c292 record_type: reserved_phone_number phone_number: '+19705555098' status: pending created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' expired_at: '2018-01-01T00:00:00.000000Z' errors: Number is already on hold status: pending customer_reference: MY REF 001 created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' type: object OAuthClient: type: object properties: record_type: type: string enum: - oauth_client description: Record type identifier client_id: type: string description: OAuth client identifier name: type: string description: Human-readable name for the OAuth client org_id: type: string description: Organization ID that owns this OAuth client user_id: type: string description: User ID that created this OAuth client allowed_scopes: type: array items: type: string description: List of allowed OAuth scopes client_type: type: string enum: - public - confidential description: OAuth client type require_pkce: type: boolean description: Whether PKCE (Proof Key for Code Exchange) is required for this client allowed_grant_types: type: array items: type: string enum: - client_credentials - authorization_code - refresh_token description: List of allowed OAuth grant types redirect_uris: type: array items: type: string format: uri description: List of allowed redirect URIs logo_uri: type: - string - 'null' format: uri description: URL of the client logo tos_uri: type: - string - 'null' format: uri description: URL of the client's terms of service policy_uri: type: - string - 'null' format: uri description: URL of the client's privacy policy client_secret: type: - string - 'null' description: Client secret (only included when available, for confidential clients) created_at: type: string format: date-time description: Timestamp when the client was created updated_at: type: string format: date-time description: Timestamp when the client was last updated required: - record_type - client_id - name - org_id - user_id - client_type - require_pkce - created_at - updated_at OAuthClientCreateRequest: type: object properties: name: type: string description: The name of the OAuth client example: My OAuth client allowed_scopes: type: array items: type: string description: List of allowed OAuth scopes example: - admin client_type: type: string enum: - public - confidential description: OAuth client type require_pkce: type: boolean description: Whether PKCE (Proof Key for Code Exchange) is required for this client default: false allowed_grant_types: type: array items: type: string enum: - client_credentials - authorization_code - refresh_token description: List of allowed OAuth grant types redirect_uris: type: array items: type: string format: uri description: List of redirect URIs (required for authorization_code flow) default: [] logo_uri: type: string format: uri description: URL of the client logo policy_uri: type: string format: uri description: URL of the client's privacy policy tos_uri: type: string format: uri description: URL of the client's terms of service required: - name - allowed_scopes - client_type - allowed_grant_types additionalProperties: false OAuthClientUpdateRequest: type: object properties: name: type: string description: The name of the OAuth client allowed_scopes: type: array items: type: string description: List of allowed OAuth scopes example: - admin require_pkce: type: boolean description: Whether PKCE (Proof Key for Code Exchange) is required for this client allowed_grant_types: type: array items: type: string enum: - client_credentials - authorization_code - refresh_token description: List of allowed OAuth grant types redirect_uris: type: array items: type: string format: uri description: List of redirect URIs logo_uri: type: string format: uri description: URL of the client logo policy_uri: type: string format: uri description: URL of the client's privacy policy tos_uri: type: string format: uri description: URL of the client's terms of service additionalProperties: false OAuthDynamicRegistrationRequest: type: object properties: redirect_uris: type: array items: type: string format: uri description: Array of redirection URI strings for use in redirect-based flows example: - https://example.com/callback client_name: type: string description: Human-readable string name of the client to be presented to the end-user example: My OAuth Application grant_types: type: array items: type: string enum: - authorization_code - client_credentials - refresh_token description: Array of OAuth 2.0 grant type strings that the client may use default: - authorization_code response_types: type: array items: type: string description: Array of the OAuth 2.0 response type strings that the client may use default: - code scope: type: string description: Space-separated string of scope values that the client may use example: admin token_endpoint_auth_method: type: string enum: - none - client_secret_basic - client_secret_post description: Authentication method for the token endpoint default: client_secret_basic logo_uri: type: string format: uri description: URL of the client logo tos_uri: type: string format: uri description: URL of the client's terms of service policy_uri: type: string format: uri description: URL of the client's privacy policy additionalProperties: false OAuthDynamicRegistrationResponse: type: object properties: client_id: type: string description: Unique client identifier example: abc123def456 client_secret: type: string description: Client secret (only for confidential clients) redirect_uris: type: array items: type: string format: uri description: Array of redirection URIs client_name: type: string description: Human-readable client name grant_types: type: array items: type: string description: Array of allowed grant types response_types: type: array items: type: string description: Array of allowed response types scope: type: string description: Space-separated scope values token_endpoint_auth_method: type: string description: Token endpoint authentication method client_id_issued_at: type: integer description: Unix timestamp of when the client ID was issued logo_uri: type: string format: uri description: URL of the client logo tos_uri: type: string format: uri description: URL of the client's terms of service policy_uri: type: string format: uri description: URL of the client's privacy policy required: - client_id - client_id_issued_at OAuthGrant: type: object properties: id: type: string format: uuid description: Unique identifier for the OAuth grant record_type: type: string enum: - oauth_grant description: Record type identifier client_id: type: string description: OAuth client identifier scopes: type: array items: type: string description: List of granted OAuth scopes last_used_at: type: - string - 'null' format: date-time description: Timestamp when the grant was last used created_at: type: string format: date-time description: Timestamp when the grant was created required: - id - record_type - client_id - scopes - created_at Observability: properties: status: $ref: '#/components/schemas/ObservabilityStatus' default: disabled secret_key_ref: title: Secret Key Ref type: string public_key_ref: title: Public Key Ref type: string host: title: Host type: string prompt_name: title: Prompt Name type: string prompt_version: title: Prompt Version type: integer minimum: 1.0 prompt_label: title: Prompt Label type: string prompt_sync: $ref: '#/components/schemas/PromptSyncStatus' default: disabled type: object title: Observability ObservabilityReq: properties: status: $ref: '#/components/schemas/ObservabilityStatus' default: disabled secret_key_ref: title: Secret Key Ref type: string public_key_ref: title: Public Key Ref type: string host: title: Host type: string prompt_name: title: Prompt Name type: string prompt_version: title: Prompt Version type: integer minimum: 1.0 prompt_label: title: Prompt Label type: string prompt_sync: $ref: '#/components/schemas/PromptSyncStatus' default: disabled type: object title: ObservabilityReq ObservabilityStatus: type: string enum: - enabled - disabled title: ObservabilityStatus OffsetMeta: type: object required: - page_number - page_size - total_pages - total_results properties: page_number: type: integer page_size: type: integer total_pages: type: integer total_results: type: integer OffsetPaginationMeta: type: object required: - page_number - page_size - total_pages - total_results properties: page_number: type: integer minimum: 1 page_size: type: integer minimum: 1 total_pages: type: integer minimum: 0 total_results: type: integer minimum: 0 OpenAIEmbeddingData: type: object properties: object: type: string default: embedding description: The object type, always 'embedding' embedding: type: array items: type: number description: The embedding vector index: type: integer description: The index of the embedding in the list of embeddings required: - object - embedding - index title: OpenAIEmbeddingData OpenAIEmbeddingModelMetadata: type: object properties: id: type: string description: The model identifier example: thenlper/gte-large object: type: string default: model description: The object type, always 'model' created: type: integer description: Unix timestamp of when the model was created owned_by: type: string description: The organization that owns the model example: telnyx required: - id - object - created - owned_by title: OpenAIEmbeddingModelMetadata OpenAIEmbeddingModelsResponse: type: object properties: object: type: string default: list description: The object type, always 'list' data: type: array items: $ref: '#/components/schemas/OpenAIEmbeddingModelMetadata' description: List of available embedding models required: - object - data title: OpenAIEmbeddingModelsResponse OpenAIEmbeddingRequest: type: object properties: input: oneOf: - type: string description: A single text string to embed - type: array items: type: string description: An array of text strings to embed description: Input text to embed. Can be a string or array of strings. model: type: string description: ID of the model to use. Use the List embedding models endpoint to see available models. example: thenlper/gte-large encoding_format: type: string enum: - float - base64 default: float description: The format to return the embeddings in. dimensions: type: integer description: The number of dimensions the resulting output embeddings should have. Only supported in some models. user: type: string description: A unique identifier representing your end-user for monitoring and abuse detection. required: - input - model title: OpenAIEmbeddingRequest OpenAIEmbeddingResponse: type: object properties: object: type: string default: list description: The object type, always 'list' data: type: array items: $ref: '#/components/schemas/OpenAIEmbeddingData' description: List of embedding objects model: type: string description: The model used for embedding usage: $ref: '#/components/schemas/OpenAIEmbeddingUsage' required: - object - data - model - usage title: OpenAIEmbeddingResponse OpenAIEmbeddingUsage: type: object properties: prompt_tokens: type: integer description: Number of tokens in the input total_tokens: type: integer description: Total number of tokens used required: - prompt_tokens - total_tokens title: OpenAIEmbeddingUsage Operation: properties: operation_id: type: string title: Operation Id status: type: string title: Status description: 'Where the write is. `completed`, `failed` and `cancelled` are terminal: stop polling at any of them, and treat `failed` and `cancelled` as writes that did not happen.' enum: - pending - processing - completed - failed - cancelled created_at: anyOf: - type: string - type: 'null' title: Created At completed_at: anyOf: - type: string - type: 'null' title: Completed At type: object required: - operation_id - status title: Operation OperationResponse: properties: data: $ref: '#/components/schemas/Operation' type: object required: - data title: OperationResponse Operator: type: string enum: - in - not_in - starts_with title: Operator OptOutItem: type: object properties: from: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address to: $ref: '#/components/schemas/ToNumber' messaging_profile_id: type: - string - 'null' description: Unique identifier for a messaging profile. keyword: type: - string - 'null' description: The keyword that triggered the opt-out. example: STOP created_at: type: string format: date-time description: The timestamp when the opt-out was created example: '2025-04-28 12:00:38.631252+00:00' OptOutListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/OptOutItem' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' OrderExternalVetting: title: OrderExternalVetting required: - evpId - vettingClass type: object properties: evpId: title: Evpid maxLength: 10 type: string description: External vetting provider ID for the brand. vettingClass: title: Vettingclass type: string description: Identifies the vetting classification. OrganizationContact: type: object required: - first_name - last_name - email - job_title - phone_number properties: first_name: type: string maxLength: 255 description: The first name of the main person Telnyx should contact about this account. example: Sam last_name: type: string maxLength: 255 description: The last name of the main person Telnyx should contact about this account. example: Org email: type: string format: email description: The email address of the main person Telnyx should contact about this account. For a call center (BPO) account this is the email you will verify later, so use a mailbox you can access. example: sam@acmeplumbing.example.com job_title: type: string maxLength: 255 description: The job title of the main person Telnyx should contact about this account. example: Compliance Lead phone_number: type: string description: The phone number of the main contact, in E.164 format, for example +12125551234. example: '+13125550000' OrganizationUser: type: object title: OrganizationUser properties: id: type: string description: Identifies the specific resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string description: Identifies the type of the resource. Can be 'organization_owner' or 'organization_sub_user'. example: organization_sub_user email: type: string format: email description: The email address of the user. example: user@example.com user_status: description: The status of the account. type: string enum: - enabled - disabled - blocked default: enabled example: enabled organization_user_bypasses_sso: type: boolean description: Indicates whether this user is allowed to bypass SSO and use password authentication. example: false created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' last_sign_in_at: type: - string - 'null' description: ISO 8601 formatted date indicating when the resource last signed into the portal. Null if the user has never signed in. example: '2018-02-02T22:25:27.521Z' groups: type: array description: The groups the user belongs to. Only included when include_groups parameter is true. items: $ref: '#/components/schemas/UserGroupReference' example: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: organization_sub_user email: user@example.com user_status: enabled organization_user_bypasses_sso: false created_at: '2018-02-02T22:25:27.521Z' last_sign_in_at: '2018-02-02T22:25:27.521Z' OrganizationUserWithGroups: type: object title: OrganizationUserWithGroups description: An organization user with their group memberships always included. properties: id: type: string description: Identifies the specific resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string description: Identifies the type of the resource. Can be 'organization_owner' or 'organization_sub_user'. example: organization_sub_user email: type: string format: email description: The email address of the user. example: user@example.com user_status: description: The status of the account. type: string enum: - enabled - disabled - blocked default: enabled example: enabled organization_user_bypasses_sso: type: boolean description: Indicates whether this user is allowed to bypass SSO and use password authentication. example: false created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' last_sign_in_at: type: - string - 'null' description: ISO 8601 formatted date indicating when the resource last signed into the portal. Null if the user has never signed in. example: '2018-02-02T22:25:27.521Z' groups: type: array description: The groups the user belongs to. items: $ref: '#/components/schemas/UserGroupReference' required: - id - record_type - email - user_status - created_at - groups example: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: organization_sub_user email: user@example.com user_status: enabled organization_user_bypasses_sso: false created_at: '2018-02-02T22:25:27.521Z' last_sign_in_at: '2018-02-02T22:25:27.521Z' groups: - id: 7b09cdc3-8948-47f0-aa62-74ac943d6c59 name: Engineering OriginalMediaUrl: description: The original URL to the PDF used for the fax's media. If media_name was supplied, this is omitted type: string example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf OutboundCallRecording: type: object example: call_recording_type: by_caller_phone_number call_recording_caller_phone_numbers: - '+19705555098' call_recording_channels: dual call_recording_format: mp3 properties: call_recording_type: type: string description: Specifies which calls are recorded. enum: - all - none - by_caller_phone_number call_recording_caller_phone_numbers: type: array items: type: string description: When call_recording_type is 'by_caller_phone_number', only outbound calls using one of these numbers will be recorded. Numbers must be specified in E164 format. example: - '+19705555098' call_recording_channels: type: string description: When using 'dual' channels, the final audio file will be a stereo recording with the first leg on channel A, and the rest on channel B. example: dual default: single enum: - single - dual call_recording_format: type: string description: The audio file format for calls being recorded. example: mp3 default: wav enum: - wav - mp3 OutboundFqdn: type: object title: Connection Outbound Settings properties: ani_override: title: ANI override type type: string description: Set a phone number as the ani_override value to override caller id number on outbound calls. x-format: E.164 ani_override_type: title: ANI override type type: string description: Specifies when we should apply your ani_override setting. Only applies when ani_override is not blank. enum: - always - normal - emergency default: always example: normal call_parking_enabled: type: - boolean - 'null' default: false description: Forces all SIP calls originated on this connection to be \"parked\" instead of \"bridged\" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next. channel_limit: type: integer description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. instant_ringback_enabled: type: boolean default: false description: When set, ringback will not wait for indication before sending ringback tone to calling party. ip_authentication_method: type: string example: credential-authentication default: ip-authentication enum: - credential-authentication - ip-authentication ip_authentication_token: type: string localization: type: string default: US description: A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default.", example: US outbound_voice_profile_id: $ref: '#/components/schemas/connections_OutboundVoiceProfileId' t38_reinvite_source: type: string enum: - telnyx - customer - disabled - passthru - caller-passthru - callee-passthru description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite. By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite. default: customer tech_prefix: type: string description: Numerical chars only, exactly 4 characters. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' timeout_1xx_secs: type: integer description: Time(sec) before aborting if connection is not made. minimum: 1 maximum: 120 default: 3 timeout_2xx_secs: type: integer description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).' minimum: 1 maximum: 600 default: 90 OutboundIp: type: object title: Outbound Ip properties: call_parking_enabled: type: - boolean - 'null' default: false description: Forces all SIP calls originated on this connection to be "parked" instead of "bridged" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next. ani_override: type: string description: Set a phone number as the ani_override value to override caller id number on outbound calls. default: '' ani_override_type: type: string enum: - always - normal - emergency description: Specifies when we apply your ani_override setting. Only applies when ani_override is not blank. default: always channel_limit: type: integer default: null description: When set, this will limit the total number of outbound calls to phone numbers associated with this connection. instant_ringback_enabled: type: boolean default: true description: When set, ringback will not wait for indication before sending ringback tone to calling party. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. localization: type: string default: null description: A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default. t38_reinvite_source: type: string enum: - telnyx - customer - disabled - passthru - caller-passthru - callee-passthru description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.

By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite. default: customer tech_prefix: type: string description: Numerical chars only, exactly 4 characters. default: '' ip_authentication_method: type: string default: tech-prefixp-charge-info example: tech-prefixp-charge-info enum: - tech-prefixp-charge-info - token ip_authentication_token: type: string default: null outbound_voice_profile_id: $ref: '#/components/schemas/connections_OutboundVoiceProfileId' example: call_parking_enabled: true ani_override: string ani_override_type: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: string t38_reinvite_source: customer tech_prefix: string ip_authentication_method: token ip_authentication_token: string outbound_voice_profile_id: '1293384261075731499' OutboundMessage: properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. id: type: string format: uuid description: Identifies the type of resource. event_type: type: string example: message.sent enum: - message.sent - message.finalized description: The type of event being delivered. occurred_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. payload: $ref: '#/components/schemas/OutboundMessagePayload' example: record_type: event id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 event_type: message.sent occurred_at: '2019-01-23T18:10:02.574Z' payload: record_type: message direction: outbound id: 40385f64-5717-4562-b3fc-2c963f66afa6 type: MMS messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18445550001' carrier: TELNYX LLC line_type: VoIP to: - phone_number: '+18665550001' status: queued carrier: T-MOBILE USA, INC. line_type: Wireless cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: - url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png content_type: null sha256: null size: null webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] OutboundMessageEvent: type: object properties: data: $ref: '#/components/schemas/OutboundMessage' meta: type: object properties: attempt: type: integer example: 1 description: Number of attempts to deliver the webhook event. delivered_to: type: string format: url example: https://www.example.com/hooks description: The webhook URL the event was delivered to. OutboundMessagePayload: type: object properties: record_type: type: string example: message enum: - message description: Identifies the type of the resource. direction: type: string example: outbound enum: - outbound description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you. id: type: string format: uuid description: Identifies the type of resource. type: type: string enum: - SMS - MMS description: The type of message. messaging_profile_id: type: string description: Unique identifier for a messaging profile. organization_id: type: string format: uuid description: The id of the organization the messaging profile belongs to. from: type: object properties: phone_number: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' to: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string description: The delivery status of the message. enum: - queued - sending - sent - expired - sending_failed - delivery_unconfirmed - delivered - delivery_failed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' cc: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string enum: - queued - sending - sent - delivered - sending_failed - delivery_failed - delivery_unconfirmed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' num_chars: type: integer description: The number of characters in the message text subject: type: - string - 'null' description: Subject of multimedia message media: type: array items: type: object properties: url: type: string format: url description: The url of the media requested to be sent. content_type: type: - string - 'null' x-format: mime-type description: The MIME type of the requested media. sha256: type: - string - 'null' description: The SHA256 hash of the requested media. size: type: - integer - 'null' description: The size of the requested media. webhook_url: type: - string - 'null' format: url description: The URL where webhooks related to this message will be sent. webhook_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. encoding: type: string description: Encoding scheme used for the message body. parts: type: integer minimum: 1 maximum: 10 description: Number of parts into which the message's body must be split. tags: type: array description: Tags associated with the resource. items: type: string cost: type: - object - 'null' properties: amount: type: string description: The amount deducted from your account. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 cost_breakdown: type: - object - 'null' properties: carrier_fee: type: object properties: amount: type: string description: The carrier fee amount. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 rate: type: object properties: amount: type: string description: The rate amount applied. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 description: Detailed breakdown of the message cost components. tcr_campaign_id: type: - string - 'null' description: The Campaign Registry (TCR) campaign ID associated with the message. tcr_campaign_billable: type: boolean description: Indicates whether the TCR campaign is billable. tcr_campaign_registered: type: - string - 'null' description: The registration status of the TCR campaign. example: REGISTERED received_at: type: string format: date-time description: ISO 8601 formatted date indicating when the message request was received. sent_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was sent. completed_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was finalized. valid_until: type: - string - 'null' description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled format: date-time errors: type: array description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses. items: $ref: '#/components/schemas/messaging_Error' smart_encoding_applied: type: boolean description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks. wait_seconds: type: - number - 'null' format: float description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay. example: 0.5 example: record_type: message direction: outbound id: 40385f64-5717-4562-b3fc-2c963f66afa6 type: MMS messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18445550001' carrier: TELNYX LLC line_type: VoIP to: - phone_number: '+18665550001' status: queued carrier: T-MOBILE USA, INC. line_type: Wireless cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: - url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png content_type: null sha256: null size: null webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] wait_seconds: 0.5 OutboundMessagePayloadCancelled: type: object properties: record_type: type: string example: message enum: - message description: Identifies the type of the resource. direction: type: string example: outbound enum: - outbound description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you. id: type: string format: uuid description: Identifies the type of resource. type: type: string enum: - SMS - MMS description: The type of message. messaging_profile_id: type: string description: Unique identifier for a messaging profile. organization_id: type: string format: uuid description: The id of the organization the messaging profile belongs to. from: type: object properties: phone_number: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' to: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string description: The delivery status of the message. enum: - scheduled - queued - sending - sent - cancelled - expired - sending_failed - delivery_unconfirmed - delivered - delivery_failed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' cc: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string description: The delivery status of the message. enum: - scheduled - queued - sending - sent - cancelled - expired - sending_failed - delivery_unconfirmed - delivered - delivery_failed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' num_chars: type: integer description: The number of characters in the message text subject: type: - string - 'null' description: Subject of multimedia message media: type: array items: type: object properties: url: type: string format: url description: The url of the media requested to be sent. content_type: type: - string - 'null' x-format: mime-type description: The MIME type of the requested media. sha256: type: - string - 'null' description: The SHA256 hash of the requested media. size: type: - integer - 'null' description: The size of the requested media. webhook_url: type: - string - 'null' format: url description: The URL where webhooks related to this message will be sent. webhook_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. encoding: type: string description: Encoding scheme used for the message body. parts: type: integer minimum: 1 maximum: 10 description: Number of parts into which the message's body must be split. tags: type: array description: Tags associated with the resource. items: type: string cost: type: - object - 'null' properties: amount: type: string description: The amount deducted from your account. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 cost_breakdown: type: - object - 'null' properties: carrier_fee: type: object properties: amount: type: string description: The carrier fee amount. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 rate: type: object properties: amount: type: string description: The rate amount applied. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 description: Detailed breakdown of the message cost components. tcr_campaign_id: type: - string - 'null' description: The Campaign Registry (TCR) campaign ID associated with the message. tcr_campaign_billable: type: boolean description: Indicates whether the TCR campaign is billable. tcr_campaign_registered: type: - string - 'null' description: The registration status of the TCR campaign. example: REGISTERED received_at: type: string format: date-time description: ISO 8601 formatted date indicating when the message request was received. sent_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was sent. completed_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was finalized. valid_until: type: - string - 'null' description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled format: date-time errors: type: array description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses. items: $ref: '#/components/schemas/messaging_Error' smart_encoding_applied: type: boolean description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks. example: record_type: message direction: outbound id: 40385f64-5717-4562-b3fc-2c963f66afa6 type: SMS messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18445550001' carrier: TELNYX LLC line_type: VoIP to: - phone_number: '+18665550001' status: cancelled carrier: T-MOBILE USA, INC. line_type: Wireless cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: [] webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0' currency: USD cost_breakdown: null tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] OutboundMessageResponse: type: object properties: data: $ref: '#/components/schemas/OutboundMessagePayload' OutboundVoiceProfile: type: object title: Outbound Voice Profile required: - name example: id: '1293384261075731499' record_type: outbound_voice_profile name: office connections_count: 12 traffic_type: conversational service_plan: global concurrent_call_limit: 10 enabled: true tags: - office-profile usage_payment_method: rate-deck whitelisted_destinations: - US - BR - AU max_destination_rate: 10 daily_spend_limit: '100.00' daily_spend_limit_enabled: true call_recording: call_recording_type: by_caller_phone_number call_recording_caller_phone_numbers: - '+19705555098' call_recording_channels: dual call_recording_format: mp3 billing_group_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 calling_window: start_time: 08:00:00.00Z end_time: 20:00:00.00Z calls_per_cld: 5 created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' properties: id: type: string description: Identifies the resource. example: '1293384261075731499' record_type: type: string description: Identifies the type of the resource. example: outbound_voice_profile name: type: string description: A user-supplied name to help with organization. example: office minLength: 3 connections_count: type: integer description: Amount of connections associated with this outbound voice profile. example: 12 traffic_type: $ref: '#/components/schemas/TrafficType' service_plan: $ref: '#/components/schemas/ServicePlan' concurrent_call_limit: type: - integer - 'null' description: Must be no more than your global concurrent call limit. Null means no limit. example: 10 enabled: type: boolean description: Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections. example: true default: true tags: type: array items: type: string example: - office-profile usage_payment_method: $ref: '#/components/schemas/UsagePaymentMethod' whitelisted_destinations: type: array items: type: string description: The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2. example: - US - BR - AU default: - US - CA max_destination_rate: type: number description: Maximum rate (price per minute) for a Destination to be allowed when making outbound calls. daily_spend_limit: type: string description: The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile in a day before disallowing new calls. example: '100.00' daily_spend_limit_enabled: type: boolean description: Specifies whether to enforce the daily_spend_limit on this outbound voice profile. example: true default: false call_recording: $ref: '#/components/schemas/OutboundCallRecording' billing_group_id: type: - string - 'null' format: uuid description: The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned). example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 default: null calling_window: type: object description: Specifies the time window and call limits for calls made using this outbound voice profile. Note that all times are UTC in 24-hour clock time. example: start_time: 08:00:00.00Z end_time: 20:00:00.00Z calls_per_cld: 5 properties: start_time: type: string description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start. example: 08:00:00.00Z end_time: type: string description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start. example: 20:00:00.00Z calls_per_cld: type: integer description: The maximum number of calls that can be initiated to a single called party (CLD) within the calling window. A null value means no limit. example: 5 created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' OutboundVoiceProfileId: title: Outbound Voice Profile ID type: string description: Identifies the associated outbound voice profile. example: '1293384261075731499' OwnershipConfirmRequest: type: object required: - still_own properties: still_own: type: boolean description: '`true` confirms you still own the number. `false` reports that you no longer own it and removes it from Number Reputation.' example: true evidence_document_id: type: string minLength: 1 maxLength: 255 description: Optional id of an uploaded document supporting the confirmation. example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c PLMN: type: object title: Public land mobile network properties: code: type: string description: Public land mobile network code (MCC + MNC). example: '311210' name: type: string description: The name of the network. example: Telnyx, LLC required: - code - name PLMNCode: type: string description: Public land mobile network code (MCC + MNC). example: '311210' PWGAssignedResourcesSummary: type: object description: The summary of the resource that have been assigned to the Private Wireless Gateway. properties: record_type: type: string description: The type of the resource assigned to the Private Wireless Gateway. example: sim_card_group readOnly: true count: type: integer description: The current count of a resource type assigned to the Private Wireless Gateway. example: 1 readOnly: true PageMeta: properties: page_number: type: integer title: Page Number description: The page returned, counting from 1. page_size: type: integer title: Page Size description: How many results a page holds. total_pages: type: integer title: Total Pages description: 'Pages that can be requested; 0 when nothing matched. Page until `page_number` reaches it rather than until a page comes back short: a page can hold fewer than `page_size` results without being the last. Capped at the deepest page served, so on a very large listing it covers fewer results than `total_results`.' total_results: type: integer title: Total Results description: Results the request matched, including any past the deepest page. type: object required: - page_number - page_size - total_pages - total_results title: PageMeta description: 'Where a listing''s page sits in the whole. A page is a snapshot: the counts it reports and the order it is drawn in both move as writes land, so paging through a busy namespace can repeat or miss an entry at a page boundary.' PaginatedAssistantTestList: properties: meta: allOf: - $ref: '#/components/schemas/Meta' description: Pagination metadata including total counts and current page info. data: items: $ref: '#/components/schemas/AssistantTestResponse' type: array title: Data description: Array of assistant test objects for the current page. type: object required: - meta - data title: PaginatedAssistantTestList description: 'Paginated list of assistant tests with metadata. Returns a subset of tests based on pagination parameters along with metadata for implementing pagination controls in the UI.' PaginatedBillingBundlesResponse: title: PaginatedBillingBundlesResponse required: - meta - data type: object properties: meta: $ref: '#/components/schemas/PaginationResponse' data: title: Data type: array items: $ref: '#/components/schemas/BillingBundleSummary' PaginatedDeletedAssistantsResponse: properties: data: items: $ref: '#/components/schemas/DeletedAssistant' type: array title: Data meta: $ref: '#/components/schemas/Meta' type: object required: - data - meta title: PaginatedDeletedAssistantsResponse description: Paginated list of Recently Deleted assistants. PaginatedScheduledEventList: properties: meta: $ref: '#/components/schemas/Meta' data: items: anyOf: - $ref: '#/components/schemas/ScheduledPhoneCallEventResponse' - $ref: '#/components/schemas/ScheduledSmsEventResponse' type: array title: Data type: object required: - meta - data title: PaginatedScheduledEventList PaginatedTestRunList: properties: meta: $ref: '#/components/schemas/Meta' description: Pagination metadata including total counts and current page info. data: items: $ref: '#/components/schemas/TestRunResponse' type: array title: Data description: Array of test run objects for the current page. type: object required: - meta - data title: PaginatedTestRunList description: 'Paginated list of test runs with metadata. Returns test run execution results with pagination support for handling large numbers of test executions.' PaginatedUserBundlesResponse: title: PaginatedUserBundlesResponse required: - meta - data type: object properties: meta: $ref: '#/components/schemas/PaginationResponse' data: title: Data type: array items: $ref: '#/components/schemas/UserBundle' Paginated_VerificationRequestStatus_: title: Paginated[VerificationRequestStatus] type: object required: - records - total_records properties: records: title: Records type: array items: $ref: '#/components/schemas/VerificationRequestStatus' description: The records yielded by this request default: [] total_records: title: Total Records type: integer description: The total amount of records for these query parameters default: 0 description: A paginated response Paginated_VerificationStatusHistoryEntry_: title: Paginated[VerificationStatusHistoryEntry] type: object required: - records - total_records properties: records: title: Records type: array items: $ref: '#/components/schemas/VerificationStatusHistoryEntry' description: The records yielded by this request default: [] total_records: title: Total Records type: integer description: The total amount of records for these query parameters default: 0 description: A paginated response PaginationData: type: object properties: total_pages: type: integer description: Total number of pages. example: 5 total_results: type: integer description: Total number of results. example: 100 page_number: type: integer description: Selected page number. example: 1 page_size: type: integer description: Records per single page example: 20 PaginationMeta: type: object properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 PaginationMetaSimple: type: object properties: page_number: type: integer example: 2 page_size: type: integer example: 25 total_pages: type: integer example: 3 total_results: type: integer example: 55 PaginationResponse: title: PaginationResponse required: - total_results - total_pages - page_number - page_size type: object properties: total_results: title: Total Results type: integer example: 55 description: Total number of results returned. total_pages: title: Total Pages type: integer example: 3 description: Total number of pages from the results. page_number: title: Page Number type: integer example: 2 description: The current page number. page_size: title: Page Size type: integer example: 25 description: The number of results per page. ParentRelationshipInfo: type: object required: - relationship_type - via - cost_rollup - traversal_enabled - description - parent_product - parent_event - parent_record_type properties: relationship_type: type: string via: $ref: '#/components/schemas/MetadataFieldMapping' cost_rollup: type: boolean traversal_enabled: type: boolean description: type: string parent_product: type: string parent_event: type: string parent_record_type: type: string Participant: type: object title: Participant required: - record_type - id - call_leg_id - call_control_id - conference - whisper_call_control_ids - created_at - updated_at - end_conference_on_exit - soft_end_conference_on_exit - status - muted - on_hold properties: record_type: type: string enum: - participant example: participant id: type: string description: Uniquely identifies the participant example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 call_leg_id: type: string description: Uniquely identifies the call leg associated with the participant example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 call_control_id: type: string description: Call Control ID associated with the partiipant of the conference example: v2:v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ conference: type: object description: Info about the conference that the participant is in properties: id: type: string description: Uniquely identifies the conference example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: type: string description: Name of the conference example: All hands meeting whisper_call_control_ids: description: Array of unique call_control_ids the participant can whisper to.. example: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw type: array items: type: string created_at: type: string description: ISO 8601 formatted date of when the participant was created example: '2019-01-23T18:10:02.574Z' updated_at: type: string description: ISO 8601 formatted date of when the participant was last updated example: '2019-01-23T18:10:02.574Z' end_conference_on_exit: type: boolean description: Whether the conference will end and all remaining participants be hung up after the participant leaves the conference. example: true soft_end_conference_on_exit: type: boolean description: Whether the conference will end after the participant leaves the conference. example: true status: type: string enum: - joining - joined - left description: The status of the participant with respect to the lifecycle within the conference example: joining muted: type: boolean description: Whether the participant is muted. example: true on_hold: type: boolean description: Whether the participant is put on_hold. example: true example: record_type: participant created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' end_conference_on_exit: true soft_end_conference_on_exit: true status: joining muted: false on_hold: true call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg whisper_call_control_ids: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw id: dfadada7-af74-47bc-83a4-554275f55f5c call_leg_id: 3a15df2d-c801-4729-adf5-b56dd42e2abb conference: id: 41b9acd4-f4da-4ff5-a85c-e07e90b53f46 name: '1' ParticipantResource: type: object title: Participant resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 api_version: v2/texml call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ call_sid_legacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: false conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 end_conference_on_exit: false hold: false muted: false status: completed uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b api_version: type: string description: The version of the API that was used to make the request. example: v2/texml call_sid: type: string description: The identifier of this participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ call_sid_legacy: type: string description: The identifier of this participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: type: boolean description: Whether the participant is coaching another call. example: false coaching_call_sid: type: string description: The identifier of the coached participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching_call_sid_legacy: type: string description: The identifier of the coached participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ date_created: type: string description: The timestamp of when the resource was created. example: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Thu, 15 Jun 2023 09:56:45 +0000 end_conference_on_exit: type: boolean description: Whether the conference ends when the participant leaves. example: false hold: type: boolean description: Whether the participant is on hold. example: false muted: type: boolean description: Whether the participant is muted. example: false status: type: string description: The status of the participant's call in the conference. enum: - connecting - connected - completed example: connected uri: type: string description: The relative URI for this participant. example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json conference_sid: type: string format: uuid description: The unique identifier for the conference. example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 ParticipantResourceIndex: type: object title: Multiple participant resources example: participants: [] end: 0 first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20 page: 0 page_size: 20 start: 0 uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20 properties: participants: type: array items: $ref: '#/components/schemas/ParticipantResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: 19 first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: 0 page_size: type: integer description: The number of items on the page example: 20 start: type: integer description: The number of the first element on the page, zero-indexed. example: 0 uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=0&PageSize=1 PatchRoomRequest: type: object properties: unique_name: description: The unique (within the Telnyx account scope) name of the room. type: string example: My room max_participants: description: The maximum amount of participants allowed in a room. If new participants try to join after that limit is reached, their request will be rejected. type: integer example: 10 default: 10 minimum: 2 maximum: 50 enable_recording: description: Enable or disable recording for that room. type: boolean example: true default: false webhook_event_url: type: string format: uri description: The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: string format: uri description: The failover URL where webhooks related to this room will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_timeout_secs: type: integer minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null PatchWabaSettingsRequest: type: object properties: name: type: string timezone: type: string description: IANA timezone identifier example: America/New_York webhook_url: type: string format: url description: URL to send Whatsapp events webhook_failover_url: type: string format: url description: Failover URL to send Whatsapp events webhook_enabled: type: boolean description: Enable/disable receiving Whatsapp events webhook_events: type: array items: type: string description: Whatsapp event to subscribe to PatchWhatsappUserDataRequest: type: object properties: webhook_url: type: string format: url description: URL to send Whatsapp signup events webhook_failover_url: type: string format: url description: Failover URL to send Whatsapp signup events PauseConferenceRecordingRequest: type: object title: Pause Recording Request properties: command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: description: Use this field to pause specific recording. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 region: $ref: '#/components/schemas/ConferenceRegion' PauseRecordingRequest: type: object title: Pause Recording Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: description: Uniquely identifies the resource. type: string format: uuid example: 6e00ab49-9487-4364-8ad6-23965965afb2 PayPrompt: type: object title: Pay Prompt description: A text-to-speech prompt with optional matching qualifiers. required: - text properties: text: type: string minLength: 1 description: Text spoken for the payment collection step. example: Please enter your card number. attempt: type: string description: Space-separated 1-based attempt numbers for which this prompt applies. example: 2 3 error_type: type: string description: Step error for which this prompt applies. enum: - timeout - invalid-card-number - invalid-card-type - invalid-date - invalid-security-code - invalid-postal-code - invalid-bank-routing-number - invalid-bank-account-number - input-matching-failed example: invalid-card-number card_type: type: string description: Lowercase, case-sensitive detected card type for which this prompt applies. enum: - visa - mastercard - amex - optima - discover - diners-club - jcb - maestro - enroute example: amex additionalProperties: false PayPromptValue: title: Pay Prompt Value description: A default prompt string or an ordered list of qualified prompts. oneOf: - type: string minLength: 1 - type: array minItems: 1 items: $ref: '#/components/schemas/PayPrompt' PayPrompts: type: object title: Pay Prompts description: Custom text-to-speech prompts keyed by payment collection step. properties: payment-card-number: $ref: '#/components/schemas/PayPromptValue' expiration-date: $ref: '#/components/schemas/PayPromptValue' postal-code: $ref: '#/components/schemas/PayPromptValue' security-code: $ref: '#/components/schemas/PayPromptValue' bank-routing-number: $ref: '#/components/schemas/PayPromptValue' bank-account-number: $ref: '#/components/schemas/PayPromptValue' additionalProperties: false example: payment-card-number: - text: Please enter your card number. - text: That card number was not accepted. Please try again. attempt: 2 3 error_type: invalid-card-number PayRequest: type: object title: Pay Request properties: connector_name: type: string default: Default description: Name of the Pay connector used to process the transaction. example: Default amount: type: number minimum: 0 description: Amount to charge. Required when `transaction_type` is `charge`. example: 10.5 currency: type: string default: USD enum: - USD - usd description: Currency used for the transaction. Pay currently supports USD only. example: USD payment_token: type: string description: Existing payment token. When supplied, payment-detail collection is skipped. example: tok_abc123 payment_method: type: string default: credit-card enum: - credit-card - ach-debit description: Payment method to collect. valid_card_types: type: array items: type: string enum: - visa - mastercard - amex - maestro - discover - optima - jcb - diners-club - enroute minItems: 1 description: Restricts accepted card numbers to the listed card types. When the caller enters a card number that does not match one of the listed types, Pay treats the input as invalid and re-prompts for the card number. Cannot be used together with `payment_token`. example: - visa - mastercard postal_code: oneOf: - type: string minLength: 1 pattern: \S - type: boolean default: 'true' description: Controls billing postal code collection for credit-card payments when no `payment_token` is supplied. Set to `true` or the string `"true"` (the default) to prompt the caller for a postal code. Set to `false` or the string `"false"` to skip the postal code prompt without supplying a postal code to the payment connector. Supply any other non-empty string, such as `"90210"`, to use that postal code without prompting. Empty or whitespace-only strings are rejected. This option does not affect ACH debit payments or payments using an existing token. example: false min_postal_code_length: type: integer minimum: 1 maximum: 128 default: 1 description: Minimum number of digits the caller must enter when collecting a credit-card billing postal code. Applies only when `postal_code` is `true` or `"true"` and no `payment_token` is supplied. The default is 1. The maximum number of digits collected is the greater of 10 and this value. This does not validate the length of a postal code supplied directly in `postal_code`. example: 5 transaction_type: type: string enum: - charge - tokenize description: Transaction to perform. If omitted, Pay infers `tokenize` when `amount` is absent or zero and `charge` when `amount` is positive. description: type: string description: Optional description forwarded with the payment transaction. example: Order 12345 client_state: type: string description: Base64-encoded state included in subsequent webhooks. example: aGF2ZSBhIG5pY2UgZGF5ID1d metadata: type: object description: Metadata forwarded to the Pay connector. additionalProperties: true example: order_id: ORD-12345 parameters: type: object description: Additional parameters forwarded to the Pay connector. additionalProperties: true example: customer_id: CUST-67890 prompts: $ref: '#/components/schemas/PayPrompts' max_attempts: type: integer format: int32 minimum: 1 maximum: 3 default: 3 description: Maximum number of attempts for each payment collection step. timeout_millis: type: integer format: int32 minimum: 1 maximum: 600000 default: 5000 description: Time in milliseconds to wait for DTMF input for each collection step. inter_digit_timeout_millis: type: integer format: int32 minimum: 1 maximum: 600000 default: 5000 description: Time in milliseconds to wait between consecutive DTMF digits. voice: type: string default: female description: Voice used for payment prompts. Accepts `male`, `female`, or a provider voice in `..` format, for example `AWS.Polly.Joanna` or `Telnyx.KokoroTTS.af`. example: female language: type: string default: en-US description: Language used for payment prompts. example: en-US service_level: type: string default: premium description: Speech synthesis service level used for payment prompts. Pay defaults to `premium`. command_id: type: string description: Idempotency key for the command. Telnyx ignores a duplicate command with the same `command_id` for the same `call_control_id`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: connector_name: Default amount: 10.5 currency: USD payment_method: credit-card transaction_type: charge max_attempts: 3 timeout_millis: 5000 inter_digit_timeout_millis: 5000 voice: female language: en-US client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 PayTool: description: (BETA) The pay tool allows the assistant to collect card payments from the caller via DTMF during the conversation. Recording is automatically paused while the pay tool is active and resumes when the payment flow completes. The connector_name must reference a pay connector configured in the Telnyx API. properties: type: type: string enum: - pay shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true pay: $ref: '#/components/schemas/PayToolParams' type: object required: - type - pay title: PayTool PayToolParams: properties: connector_name: type: string description: The name of the pay connector configured in the Telnyx API. Must reference an existing pay connector for this organization. currency: type: string default: USD description: Default currency for payments processed by this tool. payment_method: type: string default: credit-card description: Default payment method for payments processed by this tool. description: type: - string - 'null' default: null description: Description of the pay tool shown to the assistant so it knows when to call the tool. Not sent to the payment connector — the per-call `description` argument the assistant passes is what reaches the processor. connector_parameters: type: object additionalProperties: true description: Custom key/value parameters forwarded to the pay connector as `parameters` in the processor request. String values may use `{{dynamic_variable}}` templating, resolved per call. example: campaignid: abc customer_ref: CUST-67890 valid_card_types: type: array items: type: string enum: - visa - mastercard - amex - maestro - discover - optima - jcb - diners-club - enroute minItems: 1 description: Restricts accepted card numbers to the listed card types. When the caller enters a card number that does not match one of the listed types, Pay treats the input as invalid and re-prompts for the card number. example: - visa - mastercard required: - connector_name type: object title: PayToolParams PhoneNumber: properties: id: type: string format: uuid example: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 readOnly: true record_type: type: string example: number_order_phone_number readOnly: true phone_number: type: string example: '+19705555098' country_iso_alpha2: type: string description: The ISO 3166-1 alpha-2 country code of the phone number. example: US readOnly: true regulatory_requirements: type: array items: $ref: '#/components/schemas/SubNumberOrderRegulatoryRequirementWithValue' requirements_met: type: boolean description: True if all requirements are met for a phone number, false otherwise. example: true readOnly: true requirements_status: type: string enum: - pending - approved - cancelled - deleted - requirement-info-exception - requirement-info-pending - requirement-info-under-review description: Status of document requirements (if applicable) readOnly: true status: type: string enum: - pending - success - failure description: The status of the phone number in the order. readOnly: true bundle_id: type: string format: uuid example: bc8e4d67-33a0-4cbb-af74-7b58f05bd494 readOnly: true phone_number_type: type: string enum: - local - mobile - national - shared_cost - toll_free description: Phone number type readOnly: true country_code: type: string example: US description: Country code of the phone number readOnly: true example: id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 record_type: number_order_phone_number phone_number: '+19705555098' bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd474 regulatory_requirements: - record_type: phone_number_regulatory_requirement requirement_id: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_value: 45f45a04-b4be-4592-95b1-9306b9db2b21 field_type: address requirements_met: true status: success type: object PhoneNumberBatch: type: object description: A phone-number batch groups all numbers added in a single bulk-add request. Telnyx vets the batch as a unit. The response embeds the full `phone_numbers` array so you can read per-number status without a separate call, plus a batch-level `status` summarising the unit's progress. properties: batch_id: type: string format: uuid example: ba74cfc6-d32b-467a-9b08-86fd154c23f7 readOnly: true dir_id: type: string format: uuid example: 74e1d8ed-fbdb-45a7-bbb0-a09c1184eb3d dir_display_name: type: string description: The DIR's display name at the time the batch was read. example: Acme Plumbing readOnly: true enterprise_id: type: string format: uuid example: 5c987b82-2e3b-442a-afbc-0ba3c515f561 status: $ref: '#/components/schemas/PhoneNumberStatus' description: Aggregate batch status. Mirrors the values used on individual phone numbers (`submitted`, `in_review`, `verified`, `unsuccessful`, `permanently_rejected`, etc.). total_count: type: integer description: Number of phone numbers in this batch (length of `phone_numbers`). example: 1 readOnly: true submitted_at: type: string format: date-time description: When the batch was created (and implicitly submitted for vetting). example: '2026-04-26T18:14:37.065870Z' readOnly: true documents: type: array items: $ref: '#/components/schemas/Document' description: Documents attached to this batch (e.g. a Letter of Authorization). Empty when none were supplied at add time. phone_numbers: type: array items: $ref: '#/components/schemas/DirPhoneNumber' description: All phone numbers in this batch, with per-number status. PhoneNumberBatchList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/PhoneNumberBatch' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' PhoneNumberBatchWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/PhoneNumberBatch' PhoneNumberBlocksJob: type: object properties: id: type: string format: uuid example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 description: Identifies the resource. readOnly: true record_type: type: string example: phone_number_block_job description: Identifies the type of the resource. readOnly: true status: type: string enum: - pending - in_progress - completed - failed default: pending example: pending description: Indicates the completion status of the background operation. readOnly: true type: type: string enum: - delete_phone_number_block example: delete_phone_number_block description: Identifies the type of the background job. readOnly: true etc: type: string format: date-time description: ISO 8601 formatted date indicating when the estimated time of completion of the background job. readOnly: true created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true successful_operations: type: array items: description: The phone numbers successfully updated. $ref: '#/components/schemas/PhoneNumberBlocksJobSuccessfulOperation' readOnly: true failed_operations: type: array items: $ref: '#/components/schemas/PhoneNumberBlocksJobFailedOperation' readOnly: true example: id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 record_type: phone_numbers_job status: pending type: delete_phone_number_block etc: '2020-10-30T18:10:00.000Z' created_at: '2020-10-23T18:10:00.000Z' updated_at: '2020-10-23T18:10:01.000Z' successful_operations: [] failed_operations: [] PhoneNumberBlocksJobDeletePhoneNumberBlockRequest: type: object required: - phone_number_block_id properties: phone_number_block_id: type: string example: phone_number_block_id: f3946371-7199-4261-9c3d-81a0d7935146 PhoneNumberBlocksJobFailedOperation: properties: phone_number: type: string description: The phone number in e164 format. id: type: string description: The phone number's ID errors: type: array items: $ref: '#/components/schemas/numbers_Error' type: object PhoneNumberBlocksJobSuccessfulOperation: properties: phone_number: type: string description: The phone number in e164 format. id: type: string description: The phone number's ID type: object PhoneNumberBulkDeleteResponse: type: object description: Bulk-delete partial-success response. `data` is the list of phone numbers that were soft-deleted. `meta.errors` holds per-number failures (e.g. number not associated with this DIR). When EVERY number in the request fails, the endpoint instead returns 400 with the canonical Telnyx error envelope and `data`/`meta` are absent. required: - data - meta properties: data: type: array items: type: string example: '+19493253498' description: Phone numbers that were successfully soft-deleted. Bare E.164 strings. meta: type: object required: - errors properties: errors: type: array items: $ref: '#/components/schemas/PhoneNumberItemError' description: Per-number failures that did not block the call. Each entry has `phone_number`, `code`, `title`, `detail`. PhoneNumberBulkResponse: type: object description: Bulk-add success response (HTTP 201). All numbers in the request were accepted into a single new batch. Every entry in `data` shares the same `batch_id` - read it from any element to obtain the batch id for subsequent `GET .../phone_number_batches/{batch_id}` calls. If any number in the request fails (schema-invalid, not in inventory, already attached to another DIR, etc.) the entire request is rejected with HTTP 400 and the canonical Telnyx error envelope; the success body described here is therefore an all-or-nothing payload. required: - data properties: data: type: array description: Phone numbers accepted into the new batch. List order mirrors the request order. Each element shares the same `batch_id`. items: $ref: '#/components/schemas/DirPhoneNumber' PhoneNumberBundleStatusChangeRequest: type: object required: - bundle_id properties: bundle_id: type: - string - 'null' description: The new bundle_id setting for the number. If you are assigning the number to a bundle, this is the unique ID of the bundle you wish to use. If you are removing the number from a bundle, this must be null. You cannot assign a number from one bundle to another directly. You must first remove it from a bundle, and then assign it to a new bundle. example: bundle_id: 5194d8fc-87e6-4188-baa9-1c434bbe861b PhoneNumberCampaign: title: PhoneNumberCampaign required: - phoneNumber - campaignId - createdAt - updatedAt type: object properties: phoneNumber: title: Phonenumber type: string example: '+18005550199' brandId: description: Brand ID. Empty if the number is associated to a shared campaign. title: BrandId type: string example: 7ba705b7-22af-493f-addc-ac04b7ca071c tcrBrandId: description: TCR's alphanumeric ID for the brand. title: TcrBrandId type: string example: BBRAND1 campaignId: description: 'For shared campaigns, this is the TCR campaign ID, otherwise it is the campaign ID ' title: Campaignid type: string tcrCampaignId: description: TCR's alphanumeric ID for the campaign. title: TcrCampaignid type: string example: CCAMPA1 telnyxCampaignId: description: Campaign ID. Empty if the number is associated to a shared campaign. title: Telnyxcampaignid type: string example: 3008dd9f-66d7-40e0-bf23-bf2d8d1a96ba assignmentStatus: description: The assignment status of the number. title: AssignmentStatus enum: - FAILED_ASSIGNMENT - PENDING_ASSIGNMENT - ASSIGNED - PENDING_UNASSIGNMENT - FAILED_UNASSIGNMENT example: ASSIGNED type: string tmobileNumberMappingStatus: description: The T-Mobile assignment status of the number. title: TMobileNumberMappingStatus type: string example: ADDED nonTmobileNumberMappingStatus: description: The assignment status of the number towards other carriers. title: NonTMobileNumberMappingStatus type: string example: ADDED failureReasons: description: Extra info about a failure to assign/unassign a number. Relevant only if the assignmentStatus is either FAILED_ASSIGNMENT or FAILED_UNASSIGNMENT type: string createdAt: title: Createdat type: string example: '2021-03-08T17:57:48.801186' updatedAt: title: Updatedat type: string example: '2021-03-08T17:57:48.801186' PhoneNumberCampaignCreate: title: PhoneNumberCampaignCreate required: - phoneNumber - campaignId type: object properties: phoneNumber: title: Phonenumber type: string description: The phone number you want to link to a specified campaign. example: '+18005550199' campaignId: title: Campaignid type: string description: The ID of the campaign you want to link to the specified phone number. example: 4b300178-131c-d902-d54e-72d90ba1620j PhoneNumberCampaignPaginated: title: PhoneNumberCampaignPaginated required: - records - page - totalRecords type: object properties: records: title: Records type: array items: $ref: '#/components/schemas/PhoneNumberCampaign' page: title: Page type: integer totalRecords: title: Totalrecords type: integer PhoneNumberDeletedDetailed: type: object example: id: '1293384261075731499' record_type: phone_number phone_number: '+19705555098' status: deleted tags: - tag_1 - tag_2 external_pin: '1234' connection_id: '1293384261075731499' connection_name: connection-name customer_reference: customer-reference messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000 messaging_profile_name: regional-customers billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 emergency_enabled: true emergency_address_id: '1315261609962112019' call_forwarding_enabled: true cnam_listing_enabled: true caller_id_name_enabled: true call_recording_enabled: true t38_fax_gateway_enabled: true phone_number_type: local purchased_at: '2019-10-23T18:10:00.000Z' created_at: '2019-10-23T18:10:00.000Z' updated_at: '2019-10-24T18:10:00.000Z' hd_voice_enabled: true deletion_lock_enabled: false activated_at: '2019-10-23T18:10:00.000Z' properties: id: $ref: '#/components/schemas/numbers_IntId' record_type: type: string example: phone_number description: Identifies the type of the resource. readOnly: true phone_number: type: string description: The +E.164-formatted phone number associated with this record. readOnly: true status: type: string description: The phone number's current status. enum: - purchase-pending - purchase-failed - port-pending - port-failed - active - deleted - emergency-only - ported-out - port-out-pending readOnly: true tags: type: array description: A list of user-assigned tags to help manage the phone number. items: type: string external_pin: type: string description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism. connection_name: type: string description: The user-assigned name of the connection to be associated with this phone number. readOnly: true connection_id: type: string description: Identifies the connection associated with the phone number. customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 messaging_profile_id: type: string description: Identifies the messaging profile associated with the phone number. messaging_profile_name: type: string description: The name of the messaging profile associated with the phone number. example: regional-customers billing_group_id: type: string description: Identifies the billing group associated with the phone number. emergency_enabled: type: boolean description: Indicates whether emergency services are enabled for this number. readOnly: true emergency_address_id: type: string description: Identifies the emergency address associated with the phone number. readOnly: true call_forwarding_enabled: type: boolean default: true description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints. readOnly: true cnam_listing_enabled: type: boolean description: Indicates whether a CNAM listing is enabled for this number. readOnly: true caller_id_name_enabled: type: boolean description: Indicates whether caller ID is enabled for this number. readOnly: true call_recording_enabled: type: boolean description: Indicates whether call recording is enabled for this number. readOnly: true t38_fax_gateway_enabled: type: boolean description: Indicates whether T38 Fax Gateway for inbound calls to this number. readOnly: true purchased_at: type: string description: ISO 8601 formatted date indicating the time the request was made to purchase the number. readOnly: true created_at: type: string description: ISO 8601 formatted date indicating when the time it took to activate after the purchase. readOnly: true updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true hd_voice_enabled: type: boolean description: Indicates whether HD voice is enabled for this number. readOnly: true phone_number_type: type: string description: The phone number's type. enum: - local - toll_free - mobile - national - shared_cost - landline readOnly: true deletion_lock_enabled: type: boolean description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal. readOnly: true activated_at: description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked. anyOf: - type: string format: date-time - type: 'null' readOnly: true PhoneNumberDetailed: type: object example: id: '1293384261075731499' record_type: phone_number phone_number: '+19705555098' country_iso_alpha2: US status: active tags: - tag_1 - tag_2 external_pin: '1234' connection_id: '1293384261075731499' connection_name: connection-name customer_reference: customer-reference messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000 messaging_profile_name: regional-customers billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 emergency_enabled: true emergency_address_id: '1315261609962112019' emergency_status: active call_forwarding_enabled: true cnam_listing_enabled: true caller_id_name_enabled: true call_recording_enabled: true t38_fax_gateway_enabled: true phone_number_type: local inbound_call_screening: disabled purchased_at: '2019-10-23T18:10:00.000Z' created_at: '2019-10-23T18:10:00.000Z' updated_at: '2019-10-24T18:10:00.000Z' hd_voice_enabled: true source_type: number_order deletion_lock_enabled: false activated_at: '2019-10-23T18:10:00.000Z' properties: id: $ref: '#/components/schemas/numbers_IntId' record_type: type: string example: phone_number description: Identifies the type of the resource. readOnly: true phone_number: type: string description: The +E.164-formatted phone number associated with this record. readOnly: true country_iso_alpha2: type: string description: The ISO 3166-1 alpha-2 country code of the phone number. example: US readOnly: true status: type: string description: The phone number's current status. enum: - purchase-pending - purchase-failed - port-pending - port-failed - active - deleted - emergency-only - ported-out - port-out-pending - requirement-info-pending - requirement-info-under-review - requirement-info-exception - provision-pending readOnly: true tags: type: array description: A list of user-assigned tags to help manage the phone number. items: type: string external_pin: type: - string - 'null' description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism. connection_name: type: - string - 'null' description: The user-assigned name of the connection to be associated with this phone number. readOnly: true connection_id: type: - string - 'null' description: Identifies the connection associated with the phone number. customer_reference: type: - string - 'null' description: A customer reference string for customer look ups. example: MY REF 001 messaging_profile_id: type: - string - 'null' description: Identifies the messaging profile associated with the phone number. messaging_profile_name: type: - string - 'null' description: The name of the messaging profile associated with the phone number. example: regional-customers billing_group_id: type: - string - 'null' description: Identifies the billing group associated with the phone number. emergency_enabled: type: boolean description: Indicates whether emergency services are enabled for this number. readOnly: true emergency_address_id: type: - string - 'null' description: Identifies the emergency address associated with the phone number. readOnly: true emergency_status: type: string description: Indicates the status of the provisioning of emergency services for the phone number. This field contains information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned but is not yet enabled/disabled. enum: - active - deprovisioning - disabled - provisioning - provisioning-failed call_forwarding_enabled: type: boolean default: true description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints. readOnly: true cnam_listing_enabled: type: boolean description: Indicates whether a CNAM listing is enabled for this number. readOnly: true caller_id_name_enabled: type: boolean description: Indicates whether caller ID is enabled for this number. readOnly: true call_recording_enabled: type: boolean description: Indicates whether call recording is enabled for this number. readOnly: true t38_fax_gateway_enabled: type: boolean description: Indicates whether T38 Fax Gateway for inbound calls to this number. readOnly: true purchased_at: type: string description: ISO 8601 formatted date indicating when the resource was purchased. readOnly: true created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. readOnly: true format: date-time phone_number_type: type: string description: 'The phone number''s type. Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.' enum: - local - toll_free - mobile - national - shared_cost - landline - tollfree - shortcode - longcode readOnly: true inbound_call_screening: type: string enum: - disabled - reject_calls - flag_calls default: disabled description: The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it. updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true hd_voice_enabled: type: boolean description: Indicates whether HD voice is enabled for this number. readOnly: true source_type: description: Indicates if the phone number was purchased or ported in. For some numbers this information may not be available. anyOf: - type: string enum: - number_order - port_request - type: 'null' readOnly: true deletion_lock_enabled: type: boolean description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal. activated_at: description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked. anyOf: - type: string format: date-time - type: 'null' readOnly: true required: - id - record_type - phone_number - country_iso_alpha2 - status - tags - external_pin - created_at - phone_number_type - purchased_at - deletion_lock_enabled PhoneNumberEnableEmergencyRequest: type: object required: - emergency_enabled - emergency_address_id properties: emergency_enabled: type: boolean description: Indicates whether to enable emergency services on this number. emergency_address_id: type: string description: Identifies the address to be used with emergency services. example: emergency_enabled: true emergency_address_id: '53829456729313' PhoneNumberItemError: type: object description: Per-number error returned by the bulk-delete endpoint. Bulk-add does not use this shape - it returns a 400 with the canonical envelope grouping numbers by failure category. required: - phone_number - code - title - detail properties: phone_number: type: string example: '+19493253498' code: type: string enum: - not_associated description: Stable per-number error code. Currently only `not_associated` is emitted, when the number is not attached to this DIR. example: not_associated title: type: string example: Phone number not associated detail: type: string example: Phone number not associated with this DIR. PhoneNumberList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/DirPhoneNumber' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' PhoneNumberStatus: type: string enum: - submitted - in_review - verified - unsuccessful - suspended - expired - permanently_rejected description: 'Phone-number lifecycle status. - `submitted` / `in_review` - Telnyx is reviewing the batch this number belongs to. - `verified` - approved; the DIR''s display identity will be shown on outbound calls from this number. - `unsuccessful` - Telnyx rejected this submission; the customer may re-add to retry. - `suspended` - temporarily disabled (e.g. by an active infringement claim on the DIR). - `expired` - verification expired; re-add to renew. - `permanently_rejected` - terminal; cannot be re-added on this or any other DIR you own.' PhoneNumberStatusResponsePaginated: title: PhoneNumberStatusResponsePaginated required: - records type: object properties: records: title: Records type: array items: $ref: '#/components/schemas/ProfileAssignmentPhoneNumbers' PhoneNumberVerifyOwnershipRequest: type: object required: - phone_numbers properties: phone_numbers: type: array description: Array of phone numbers to verify ownership for items: type: string description: Phone number in E.164 format example: '+15551234567' minItems: 1 maxItems: 1000 PhoneNumberVerifyOwnershipResponse: type: object properties: found: type: array description: The list of phone numbers which you own and are in an editable state items: type: object properties: number_val_e164: type: string description: The phone number in E.164 format example: '+15551234567' id: $ref: '#/components/schemas/numbers_IntId' not_found: type: array description: Phone numbers that are not found in the account items: type: string description: Phone number in E.164 format example: '+15551234568' record_type: type: string example: number_ownership_verification description: Identifies the type of the resource. readOnly: true PhoneNumberWithMessagingSettings: type: object example: record_type: messaging_settings id: '1293384261075731499' phone_number: '+18005550001' messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' country_code: US type: tollfree health: message_count: 122 inbound_outbound_ratio: 0.43 success_ratio: 0.94 spam_ratio: 0.06 eligible_messaging_products: - A2P traffic_type: A2P messaging_product: A2P features: sms: domestic_two_way: true international_inbound: true international_outbound: true mms: null properties: record_type: type: string example: messaging_settings enum: - messaging_phone_number - messaging_settings description: Identifies the type of the resource. readOnly: true id: type: string description: Identifies the type of resource. readOnly: true phone_number: type: string description: +E.164 formatted phone number. readOnly: true x-format: e164 messaging_profile_id: type: - string - 'null' description: Unique identifier for a messaging profile. created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true country_code: type: string description: ISO 3166-1 alpha-2 country code. pattern: ^[A-Z]{2}$ example: US readOnly: true type: type: string description: The type of the phone number enum: - long-code - toll-free - short-code - longcode - tollfree - shortcode readOnly: true health: $ref: '#/components/schemas/NumberHealthMetrics' eligible_messaging_products: type: array description: The messaging products that this number can be registered to use readOnly: true items: type: string traffic_type: type: string description: The messaging traffic or use case for which the number is currently configured. example: P2P readOnly: true messaging_product: type: string description: The messaging product that the number is registered to use example: P2P features: type: object readOnly: true properties: sms: $ref: '#/components/schemas/MessagingFeatureSet' mms: $ref: '#/components/schemas/MessagingFeatureSet' organization_id: type: string description: The organization that owns this phone number. tags: type: array items: type: string description: Tags associated with this phone number. PhoneNumberWithVoiceSettings: type: object properties: id: type: string example: '1293384261075731499' description: Identifies the type of resource. readOnly: true record_type: type: string example: voice_settings description: Identifies the type of the resource. readOnly: true phone_number: type: string example: '+13035551234' description: The phone number in +E164 format. readOnly: true connection_id: type: string example: 1d0e6cb8-8668-462e-94c6-49ae0f0ed48b description: Identifies the connection associated with this phone number. customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 tech_prefix_enabled: type: boolean default: false example: false description: Controls whether a tech prefix is enabled for this phone number. translated_number: type: string example: '+13035559999' default: '' description: This field allows you to rewrite the destination number of an inbound call before the call is routed to you. The value of this field may be any alphanumeric value, and the value will replace the number originally dialed. call_forwarding: $ref: '#/components/schemas/CallForwarding' cnam_listing: $ref: '#/components/schemas/CnamListing' emergency: $ref: '#/components/schemas/EmergencySettings' usage_payment_method: type: string enum: - pay-per-minute - channel default: pay-per-minute example: pay-per-minute description: Controls whether a number is billed per minute or uses your concurrent channels. media_features: $ref: '#/components/schemas/MediaFeatures' call_recording: $ref: '#/components/schemas/CallRecording' inbound_call_screening: type: string enum: - disabled - reject_calls - flag_calls default: disabled description: The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it. example: id: '1293384261075731499' record_type: voice_settings connection_id: 1d0e6cb8-8668-462e-94c6-49ae0f0ed48b customer_reference: customer-reference tech_prefix_enabled: false translated_number: '+13035559999' call_forwarding: call_forwarding_enabled: true forwards_to: '+13035559123' forwarding_type: always cnam_listing: cnam_listing_enabled: true cnam_listing_details: example emergency: emergency_enabled: true emergency_address_id: '1315261609962112019' emergency_status: active usage_payment_method: pay-per-minute media_features: rtp_auto_adjust_enabled: true accept_any_rtp_packets_enabled: true t38_fax_gateway_enabled: true call_recording: inbound_call_recording_enabled: true inbound_call_recording_format: wav inbound_call_recording_channels: single inbound_call_screening: disabled PhoneNumbersJob: type: object properties: id: type: string format: uuid example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 description: Identifies the resource. readOnly: true record_type: type: string example: phone_numbers_job description: Identifies the type of the resource. readOnly: true status: type: string enum: - pending - in_progress - completed - failed - expired default: pending example: pending description: Indicates the completion status of the background update. readOnly: true type: type: string enum: - update_emergency_settings - delete_phone_numbers - update_phone_numbers example: update_emergency_settings description: Identifies the type of the background job. readOnly: true etc: type: string format: date-time description: ISO 8601 formatted date indicating when the estimated time of completion of the background job. readOnly: true created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true phone_numbers: type: array items: description: The unique phone numbers given as arguments in the job creation. $ref: '#/components/schemas/PhoneNumbersJobPhoneNumber' successful_operations: type: array items: description: The phone numbers successfully updated. $ref: '#/components/schemas/PhoneNumbersJobSuccessfulOperation' readOnly: true pending_operations: type: array items: description: The phone numbers pending confirmation on update results. Entries in this list are transient, and will be moved to either successful_operations or failed_operations once the processing is done. $ref: '#/components/schemas/PhoneNumbersJobPendingOperation' readOnly: true failed_operations: type: array items: $ref: '#/components/schemas/PhoneNumbersJobFailedOperation' readOnly: true example: id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 record_type: phone_numbers_job status: pending type: update_emergency_settings etc: '2020-10-30T18:10:00.000Z' created_at: '2020-10-23T18:10:00.000Z' updated_at: '2020-10-23T18:10:01.000Z' phone_numbers: - id: '2637816387126861836' - phone_number: '+19715555098' - phone_number: '+19705555099' - id: '3388768018273' successful_operations: - id: '2637816387126861836' phone_number: '+19705555098' - id: '33081887126861836' phone_number: '+19715555098' pending_operations: - id: '2637816387126861837' phone_number: '+19705555099' failed_operations: - id: '3388768018273' phone_number: '+19705551234' errors: - code: '10015' title: Bad Request detail: The field is invalid. source: pointer: /emergency_address_id PhoneNumbersJobDeletePhoneNumbersRequest: type: object required: - phone_numbers properties: phone_numbers: type: array items: description: Array of phone number ids and/or phone numbers in E164 format to update type: string example: phone_numbers: - '+19705555098' - '+19715555098' - '32873127836' PhoneNumbersJobFailedOperation: properties: phone_number: type: string description: The phone number in e164 format. id: type: string description: The phone number's ID errors: type: array items: $ref: '#/components/schemas/numbers_Error' type: object PhoneNumbersJobPendingOperation: properties: phone_number: type: string description: The phone number in e164 format. id: type: string description: The phone number's ID type: object PhoneNumbersJobPhoneNumber: properties: phone_number: type: string description: The phone number in e164 format. example: '+19705555000' id: type: string description: The phone number's ID type: object PhoneNumbersJobSuccessfulOperation: properties: phone_number: type: string description: The phone number in e164 format. id: type: string description: The phone number's ID type: object PhoneNumbersJobUpdateEmergencySettingsRequest: type: object required: - emergency_enabled - phone_numbers properties: phone_numbers: type: array items: description: Array of phone number ids and/or phone numbers in E164 format to update type: string emergency_enabled: type: boolean description: Indicates whether to enable or disable emergency services on the numbers. emergency_address_id: type: - string - 'null' description: Identifies the address to be used with emergency services. Required if emergency_enabled is true, must be null or omitted if emergency_enabled is false. example: emergency_enabled: true emergency_address_id: '53829456729313' phone_numbers: - '+19705555098' - '+19715555098' - '32873127836' PhoneNumbersJobUpdatePhoneNumbersRequest: type: object required: - phone_numbers properties: phone_numbers: type: array description: Array of phone number ids and/or phone numbers in E164 format to update. This parameter is required if no filter parameters are provided. If you want to update specific numbers rather than all numbers matching a filter, you must use this parameter. Each item must be either a valid phone number ID or a phone number in E164 format (e.g., '+13127367254'). items: type: string tags: type: array description: A list of user-assigned tags to help organize phone numbers. items: type: string external_pin: type: string description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism. customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 connection_id: type: string description: Identifies the connection associated with the phone number. billing_group_id: type: string description: Identifies the billing group associated with the phone number. hd_voice_enabled: type: boolean description: Indicates whether to enable or disable HD Voice on each phone number. HD Voice is a paid feature and may not be available for all phone numbers, more details about it can be found in the Telnyx support documentation. deletion_lock_enabled: type: boolean description: Indicates whether to enable or disable the deletion lock on each phone number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal. voice: $ref: '#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest' example: phone_numbers: - '1583466971586889004' - '+13127367254' tags: - tag external_pin: '123456' customer_reference: customer-reference connection_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 billing_group_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 deletion_lock_enabled: true voice: call_forwarding: call_forwarding_enabled: true forwards_to: '+13035559123' forwarding_type: always PhysicalAddress: type: object required: - country - administrative_area - city - postal_code - street_address properties: country: type: string description: ISO 3166-1 alpha-2 code (currently `US` or `CA`). example: US administrative_area: type: string description: State or province code (e.g. `IL`, `ON`). example: IL city: type: string maxLength: 100 description: The city of your registered business address. example: Chicago postal_code: type: string maxLength: 20 description: The postal or ZIP code of your registered business address. example: '60601' street_address: type: string maxLength: 255 description: The street address of your registered business, including the building number and street name. example: 100 Main St extended_address: type: string maxLength: 255 description: An optional second address line, such as a suite, unit, or floor. Leave blank if it does not apply. example: Suite 504 nullable: true PlanResponse: properties: data: items: $ref: '#/components/schemas/PlanStepData' type: array title: Data type: object required: - data title: PlanResponse PlanStepData: properties: step_id: type: string title: Step Id run_id: type: string format: uuid title: Run Id parent_step_id: title: Parent Step Id type: string sequence: type: integer title: Sequence description: type: string title: Description status: $ref: '#/components/schemas/StepStatus' started_at: title: Started At type: string format: date-time completed_at: title: Completed At type: string format: date-time metadata: title: Metadata additionalProperties: true type: object type: object required: - step_id - run_id - sequence - description - status title: PlanStepData PlanStepResponse: properties: data: $ref: '#/components/schemas/PlanStepData' type: object required: - data title: PlanStepResponse PlanStepsCreatedResponse: properties: data: items: $ref: '#/components/schemas/PlanStepData' type: array title: Data type: object required: - data title: PlanStepsCreatedResponse PlayAudioUrlRequest: type: object title: Play Audio URL Request properties: audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played back on the call. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played back on the call. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. loop: description: The number of times the audio file should be played. If supplied, the value must be an integer between 1 and 100, or the special string `infinity` for an endless loop. $ref: '#/components/schemas/Loopcount' example: infinity default: 1 overlay: description: 'When enabled, audio will be mixed on top of any other audio that is actively being played back. Note that `overlay: true` will only work if there is another audio file already being played on the call.' type: boolean example: true default: false stop: description: When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue. type: string example: current target_legs: description: Specifies the leg or legs on which audio will be played. If supplied, the value must be either `self`, `opposite` or `both`. type: string default: self example: self cache_audio: description: Caches the audio file. Useful when playing the same audio file multiple times during the call. type: boolean default: true example: true audio_type: description: Specifies the type of audio provided in `audio_url` or `playback_content`. type: string enum: - mp3 - wav default: mp3 example: wav playback_content: description: 'Allows a user to provide base64 encoded mp3 or wav. Note: when using this parameter, `media_url` and `media_name` in the `playback_started` and `playback_ended` webhooks will be empty' type: string example: SUQzAwAAAAADf1... client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: audio_url: http://www.example.com/sounds/greeting.wav loop: infinity overlay: true stop: current target_legs: self client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 PlayBeep: type: boolean description: Whether to play a beep when recording is started. example: false default: true PlaybackStopRequest: type: object title: Playback Stop Request properties: overlay: description: When enabled, it stops the audio being played in the overlay queue. type: boolean example: true default: false stop: description: Use `current` to stop the current audio being played. Use `all` to stop the current audio file being played and clear all audio files from the queue. type: string example: current default: all client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: overlay: false stop: all client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 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 - localcommercial - mobile - multipurpose - national - other - shared_cost - toll_free description: type: string description: A description of the porting order example: FP Telnyx readOnly: true requirements: type: array description: List of documentation requirements for porting numbers. Can be set directly or via the `requirement_group_id` parameter. items: $ref: '#/components/schemas/PortingOrderRequirement' requirements_met: type: boolean description: Is true when the required documentation is met example: false user_feedback: $ref: '#/components/schemas/PortingOrderUserFeedback' user_id: type: string format: uuid description: Identifies the user (or organization) who requested the porting order example: 40d68ba2-0847-4df2-be9c-b0e0cb673e75 webhook_url: type: - string - 'null' format: uri example: https://example.com/porting_webhooks record_type: type: string example: porting_order description: Identifies the type of the resource. readOnly: true messaging: $ref: '#/components/schemas/PortingOrderMessaging' additional_steps: type: array description: For specific porting orders, we may require additional steps to be taken before submitting the porting order. items: type: string enum: - associated_phone_numbers - phone_number_verification_codes PortingOrderActivationSettings: type: object properties: foc_datetime_requested: type: - string - 'null' format: date-time description: ISO 8601 formatted Date/Time requested for the FOC date example: '2021-03-19T10:07:15.527Z' foc_datetime_actual: type: - string - 'null' format: date-time description: ISO 8601 formatted Date/Time of the FOC date example: '2021-03-19T10:07:15.527Z' fast_port_eligible: type: boolean readOnly: true description: Indicates whether this porting order is eligible for FastPort example: true activation_status: anyOf: - $ref: '#/components/schemas/PortingOrderActivationStatus' - type: 'null' PortingOrderActivationStatus: type: string description: Activation status enum: - New - Pending - Conflict - Cancel Pending - Failed - Concurred - Activate RDY - Disconnect Pending - Concurrence Sent - Old - Sending - Active - Cancelled example: Active PortingOrderDocuments: type: object description: Can be specified directly or via the `requirement_group_id` parameter. properties: loa: type: - string - 'null' format: uuid description: Returned ID of the submitted LOA via the Documents endpoint example: 64ffb720-04c7-455b-92d6-20fcca92e935 invoice: type: - string - 'null' format: uuid description: Returned ID of the submitted Invoice via the Documents endpoint example: ce74b771-d23d-4960-81ec-8741b3862146 PortingOrderEndUser: type: object properties: admin: $ref: '#/components/schemas/PortingOrderEndUserAdmin' location: $ref: '#/components/schemas/PortingOrderEndUserLocation' PortingOrderEndUserAdmin: type: object properties: entity_name: type: - string - 'null' description: Person Name or Company name requesting the port example: Porter McPortersen auth_person_name: type: - string - 'null' description: Name of person authorizing the porting order example: Porter McPortersen II billing_phone_number: type: - string - 'null' description: Billing phone number associated with these phone numbers example: '13035551234' account_number: type: - string - 'null' description: The authorized person's account number with the current service provider example: 123abc tax_identifier: type: - string - 'null' description: European tax identification number. Applicable only in the European Union example: 1234abcd pin_passcode: type: - string - 'null' description: PIN/passcode possibly required by the old service provider for extra verification example: '1234' business_identifier: type: - string - 'null' description: European business identification number. Applicable only in the European Union example: abc123 PortingOrderEndUserLocation: type: object properties: street_address: type: - string - 'null' description: First line of billing address example: 600 Congress Avenue extended_address: type: - string - 'null' description: Second line of billing address example: 14th Floor locality: type: - string - 'null' description: City or municipality of billing address example: Austin administrative_area: type: - string - 'null' description: State, province, or similar of billing address example: TX postal_code: type: - string - 'null' description: Postal Code of billing address example: '78701' country_code: type: - string - 'null' description: ISO3166-1 alpha-2 country code of billing address example: US PortingOrderMessaging: type: object description: Information about messaging porting process. properties: messaging_capable: type: boolean description: Indicates whether the porting order can also port messaging capabilities. example: true enable_messaging: type: boolean description: Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false, any messaging capabilities will stay with their current provider. example: true messaging_port_status: type: string description: The current status of the messaging porting. enum: - not_applicable - pending - activating - exception - canceled - partial_port_complete - ported example: pending messaging_port_completed: type: boolean description: Indicates whether the messaging porting has been completed. example: false PortingOrderMisc: type: object properties: type: $ref: '#/components/schemas/PortingOrderType' remaining_numbers_action: type: - string - 'null' description: Remaining numbers can be either kept with their current service provider or disconnected. 'new_billing_telephone_number' is required when 'remaining_numbers_action' is 'keep'. enum: - keep - disconnect - null example: disconnect new_billing_phone_number: type: - string - 'null' description: New billing phone number for the remaining numbers. Used in case the current billing phone number is being ported to Telnyx. This will be set on your account with your current service provider and should be one of the numbers remaining on that account. PortingOrderPhoneNumberConfiguration: type: object properties: billing_group_id: type: - string - 'null' description: identifies the billing group to set on the numbers when ported example: f1486bae-f067-460c-ad43-73a92848f902 connection_id: type: - string - 'null' description: identifies the connection to set on the numbers when ported example: f1486bae-f067-460c-ad43-73a92848f902 messaging_profile_id: type: - string - 'null' description: identifies the messaging profile to set on the numbers when ported example: f1486bae-f067-460c-ad43-73a92848f901 emergency_address_id: type: - string - 'null' description: identifies the emergency address to set on the numbers when ported example: f1486bae-f067-460c-ad43-73a92848f902 tags: type: array items: type: string description: Tag to set on the numbers when ported example: - abc - '123' PortingOrderRequirement: type: object properties: field_type: type: string description: Type of value expected on field_value field enum: - document example: document field_value: type: string description: identifies the document that satisfies this requirement example: 9787fb5f-cbe5-4de4-b765-3303774ee9fe requirement_type_id: type: string description: Identifies the requirement type that meets this requirement example: 59b0762a-b274-4f76-ac32-4d5cf0272e66 record_type: type: string description: Identifies the type of the resource. example: porting_requirement PortingOrderRequirementDetail: type: object properties: field_type: type: string description: Type of value expected on field_value field enum: - document - textual example: document field_value: type: string description: Identifies the document that satisfies this requirement example: 9787fb5f-cbe5-4de4-b765-3303774ee9fe requirement_type: type: object description: Identifies the requirement type that meets this requirement properties: acceptance_criteria: type: object description: The acceptance criteria for the requirement type example: acceptable_values: [] additionalProperties: true description: type: string description: A description of the requirement type example: A copy of the latest phone bill from the current provider example: type: string description: An example of the requirement type example: Most recent phone bill id: type: string description: Identifies the requirement type example: 53970723-fbff-4f46-a975-f62be6c1a585 name: type: string description: The name of the requirement type example: Latest Invoice type: type: string description: The type of the requirement type example: document requirement_status: type: string description: Status of the requirement example: approved record_type: type: string description: Identifies the type of the resource. example: porting_requirement PortingOrderSharingToken: type: object properties: id: type: string description: Uniquely identifies this sharing token format: uuid example: 0a4b78a0-d416-4761-94f7-46c72ec56547 porting_order_id: type: string format: uuid description: Identifies the porting order resource being shared example: f1486bae-f067-460c-ad43-73a92848f902 expires_in_seconds: type: integer minimum: 1 description: The number of seconds until the sharing token expires example: 3600 permissions: type: array description: The permissions granted to the sharing token items: type: string enum: - porting_order.document.read - porting_order.document.update example: - porting_order.document.read - porting_order.document.update token: type: string description: A signed JWT token that can be used to access the shared resource example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODk4OTQ2NzcsImlzdCI6MTY4OTg5MTA3NywicGVybWlzc2lvbnMiOlsicG9ydGluZ19vcmRlci5kb2N1bWVudC5yZWFkIl0sInBvcnRpbmdfb3JkZXJfaWQiOiJmZDRiODZjOC00OTdkLTRjNmQtOTYwOS1hNzg5ZTRlMTRjZmUifQ.CT0HRF6OLj7VPZ8p5Y_0S8rOL8SEUznwJJkR-YReKwc expires_at: type: string format: date-time description: ISO 8601 formatted date indicating when the sharing token expires. example: '2021-03-19T10:07:15.527000Z' record_type: type: string example: porting_order_sharing_token description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' PortingOrderStatus: type: object description: Porting order status properties: details: type: array items: $ref: '#/components/schemas/PortingOrdersExceptionType' description: A list of 0 or more details about this porting order's status value: type: string description: The current status of the porting order example: ported enum: - draft - in-process - submitted - exception - foc-date-confirmed - ported - cancelled - cancel-pending PortingOrderType: type: string description: A port can be either 'full' or 'partial'. When type is 'full' the other attributes should be omitted. enum: - full - partial example: full PortingOrderUserFeedback: type: object properties: user_rating: type: - integer - 'null' description: Once an order is ported, cancellation is requested or the request is cancelled, the user may rate their experience example: 5 user_comment: type: - string - 'null' description: A comment related to the customer rating. example: I loved my experience porting numbers with Telnyx PortingOrdersActivationJob: type: object properties: id: description: Uniquely identifies this activation job type: string format: uuid example: f1486bae-f067-460c-ad43-73a92848f902 readOnly: true status: type: string description: Specifies the status of this activation job enum: - created - in-process - completed - failed activation_type: type: string description: Specifies the type of this activation job enum: - scheduled - on-demand activate_at: type: string format: date-time description: ISO 8601 formatted date indicating when the activation job should be executed. This time should be between some activation window. example: '2021-03-19T10:07:15.527Z' activation_windows: type: array description: List of allowed activation windows for this activation job items: type: object properties: start_at: type: string format: date-time description: ISO 8601 formatted date indicating when the activation window starts example: '2021-03-19T10:07:15.527Z' end_at: type: string format: date-time description: ISO 8601 formatted date indicating when the activation window ends example: '2021-03-19T10:07:15.527Z' record_type: type: string example: porting_activation_job description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527Z' readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527Z' readOnly: true PortingOrdersAllowedFocWindow: type: object title: PortingOrdersAllowedFocWindow properties: started_at: type: string format: date-time description: ISO 8601 formatted date indicating the start of the range of foc window. example: '2021-03-19T10:07:15.527Z' readOnly: true ended_at: type: string format: date-time description: ISO 8601 formatted date indicating the end of the range of foc window example: '2021-03-19T10:07:15.527Z' readOnly: true record_type: type: string example: porting_order description: Identifies the type of the resource. readOnly: true PortingOrdersComment: type: object properties: id: type: string format: uuid example: f1486bae-f067-460c-ad43-73a92848f902 body: type: string description: Body of comment example: Great experience so far porting_order_id: type: string format: uuid example: f1486bae-f067-460c-ad43-73a92848f902 user_type: type: string description: Indicates whether this comment was created by a Telnyx Admin, user, or system enum: - admin - user - system example: user record_type: type: string description: Identifies the type of the resource. example: porting_comment created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527Z' PortingOrdersExceptionType: type: object properties: code: type: string description: Identifier of an exception type enum: - ACCOUNT_NUMBER_MISMATCH - AUTH_PERSON_MISMATCH - BTN_ATN_MISMATCH - ENTITY_NAME_MISMATCH - FOC_EXPIRED - FOC_REJECTED - LOCATION_MISMATCH - LSR_PENDING - MAIN_BTN_PORTING - OSP_IRRESPONSIVE - OTHER - PASSCODE_PIN_INVALID - PHONE_NUMBER_HAS_SPECIAL_FEATURE - PHONE_NUMBER_MISMATCH - PHONE_NUMBER_NOT_PORTABLE - PORT_TYPE_INCORRECT - PORTING_ORDER_SPLIT_REQUIRED - POSTAL_CODE_MISMATCH - RATE_CENTER_NOT_PORTABLE - SV_CONFLICT - SV_UNKNOWN_FAILURE example: ENTITY_NAME_MISMATCH description: type: string description: Description of an exception type example: Entity name does not match that on the CSR PortingPhoneNumber: type: object properties: porting_order_status: type: string description: The current status of the porting order enum: - draft - in-process - submitted - exception - foc-date-confirmed - cancel-pending - ported - cancelled example: in-process phone_number_type: type: string description: The type of the phone number enum: - landline - local - localcommercial - mobile - multipurpose - national - other - shared_cost - toll_free example: local phone_number: type: string description: E164 formatted phone number example: '13035550987' porting_order_id: type: string format: uuid description: Identifies the associated port request example: f1486bae-f067-460c-ad43-73a92848f902 support_key: type: string description: A key to reference this porting order when contacting Telnyx customer support example: sr_a12345 activation_status: $ref: '#/components/schemas/PortingOrderActivationStatus' portability_status: $ref: '#/components/schemas/PortabilityStatus' requirements_status: type: string description: The current status of the requirements in a INTL porting order enum: - requirement-info-pending - requirement-info-under-review - requirement-info-exception - approved example: approved record_type: type: string example: porting_phone_number description: Identifies the type of the resource. readOnly: true PortingPhoneNumberBlock: type: object properties: id: description: Uniquely identifies this porting phone number block. type: string format: uuid example: f24151b6-3389-41d3-8747-7dd8c681e5e2 readOnly: true country_code: description: Specifies the country code for this porting phone number block. It is a two-letter ISO 3166-1 alpha-2 country code. type: string example: DE phone_number_type: description: Specifies the phone number type for this porting phone number block. type: string example: local enum: - landline - local - localcommercial - mobile - multipurpose - national - other - shared_cost - toll_free phone_number_range: description: Specifies the phone number range for this porting phone number block. type: object properties: start_at: description: Specifies the start of the phone number range for this porting phone number block. type: string pattern: ^\+\d{7,15}$ example: '+4930244999901' end_at: description: Specifies the end of the phone number range for this porting phone number block. type: string pattern: ^\+\d{7,15}$ example: '+4930244999910' activation_ranges: description: Specifies the activation ranges for this porting phone number block. The activation range must be within the phone number range and should not overlap with other activation ranges. type: array items: type: object properties: start_at: description: Specifies the start of the activation range. Must be greater or equal the start of the phone number range. type: string pattern: ^\+\d{7,15}$ example: '+4930244999901' end_at: description: Specifies the end of the activation range. It must be no more than the end of the phone number range. type: string pattern: ^\+\d{7,15}$ example: '+4930244999910' record_type: type: string example: porting_phone_number_block description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527Z' readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was last updated. example: '2021-03-19T10:07:15.527Z' readOnly: true PortingPhoneNumberConfiguration: type: object properties: id: type: string description: Uniquely identifies this phone number configuration format: uuid example: eef3340b-8903-4466-b445-89b697315a3a user_bundle_id: type: string format: uuid description: Identifies the associated user bundle example: daa4308e-742f-4867-97f2-3073db13319a porting_phone_number_id: type: string format: uuid description: Identifies the associated porting phone number example: f1486bae-f067-460c-ad43-73a92848f902 record_type: type: string example: porting_phone_number_configuration description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' PortingPhoneNumberExtension: type: object properties: id: description: Uniquely identifies this porting phone number extension. type: string format: uuid example: f24151b6-3389-41d3-8747-7dd8c681e5e2 readOnly: true porting_phone_number_id: description: Identifies the porting phone number associated with this porting phone number extension. type: string format: uuid example: f24151b6-3389-41d3-8747-7dd8c681e5e2 extension_range: description: Specifies the extension range for this porting phone number extension. type: object properties: start_at: description: Specifies the start of the extension range for this porting phone number extension. type: integer example: 1 end_at: description: Specifies the end of the extension range for this porting phone number extension. type: integer example: 10 activation_ranges: description: Specifies the activation ranges for this porting phone number extension. The activation range must be within the extension range and should not overlap with other activation ranges. type: array items: type: object properties: start_at: description: Specifies the start of the activation range. Must be greater or equal the start of the extension range. type: integer example: 1 end_at: description: Specifies the end of the activation range. It must be no more than the end of the extension range. type: integer example: 10 record_type: type: string example: porting_phone_number_extension description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527Z' readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was last updated. example: '2021-03-19T10:07:15.527Z' readOnly: true PortingReport: type: object properties: id: type: string description: Uniquely identifies the report. format: uuid example: eef3340b-8903-4466-b445-89b697315a3a report_type: type: string description: Identifies the type of report enum: - export_porting_orders_csv example: export_porting_orders_csv status: type: string description: The current status of the report generation. enum: - pending - completed example: completed params: oneOf: - $ref: '#/components/schemas/ExportPortingOrdersCSVReport' document_id: type: string format: uuid description: Identifies the document that was uploaded when report was generated. This field is only populated when the report is under completed status. example: f1486bae-f067-460c-ad43-73a92848f902 record_type: type: string example: porting_report description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' PortingUKCarrier: type: object properties: id: type: string format: uuid example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c description: Identifies the UK carrier. cupid: type: string description: The CUPID of the carrier. This is a 3 digit number code that identifies the carrier in the UK. example: '895' name: type: string description: The name of the carrier. example: Telnyx UK Limited alternative_cupids: type: array description: Alternative CUPIDs of the carrier. items: type: string description: An alternative CUPID of the carrier. example: '895' record_type: type: string example: porting_uk_carrier description: Identifies the type of the resource. created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' PortingVerificationCode: type: object properties: id: type: string description: Uniquely identifies this porting verification code format: uuid example: f1486bae-f067-460c-ad43-73a92848f902 phone_number: type: string description: E164 formatted phone number example: '+13035550987' verified: type: boolean description: Indicates whether the verification code has been verified example: true porting_order_id: type: string format: uuid description: Identifies the associated porting order example: f1486bae-f067-460c-ad43-73a92848f902 record_type: type: string example: porting_verification_code description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' PortoutComment: required: - id - body - user_id - created_at properties: id: type: string example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 record_type: type: string description: Identifies the type of the resource. readOnly: true example: portout body: type: string description: Comment body example: This is a comment portout_id: type: string description: Identifies the associated port request default: null example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 user_id: type: string description: Identifies the user who created the comment. Will be null if created by Telnyx Admin example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 created_at: type: string description: Comment creation timestamp in ISO 8601 format example: '2018-02-02T22:25:27.521Z' example: id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 record_type: portout body: This is a comment portout_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 user_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 created_at: '2018-02-02T22:25:27.521Z' type: object PortoutDetails: type: object properties: id: type: string example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 record_type: type: string description: Identifies the type of the resource. readOnly: true example: portout phone_numbers: description: Phone numbers associated with this portout type: array items: type: string description: E164 formatted phone number example: - '+35312345678' authorized_name: type: string description: Name of person authorizing the porting order example: McPortersen carrier_name: type: string description: Carrier the number will be ported out to example: test current_carrier: type: string description: The current carrier example: telnyx end_user_name: type: string description: Person name or company name requesting the port example: McPortersen city: type: string description: City or municipality of billing address example: Chicago state: type: string description: State, province, or similar of billing address example: IL zip: type: string description: Postal Code of billing address example: '00000' lsr: type: array description: The Local Service Request items: type: string format: uri description: A link to the Local Service Request example: - https://example.com/files/lsr.pdf pon: type: string description: Port order number assigned by the carrier the number will be ported out to example: '00000000' reason: type: - string - 'null' description: The reason why the order is being rejected by the user. If the order is authorized, this field can be left null example: null rejection_code: type: integer description: The rejection code for one of the valid rejections to reject a port out order example: 1002 service_address: type: string description: First line of billing address (street address) example: 000 Example Street foc_date: type: string description: ISO 8601 formatted Date/Time of the FOC date example: '2018-02-02T22:25:27.521Z' requested_foc_date: type: string description: ISO 8601 formatted Date/Time of the user requested FOC date example: '2018-02-02T22:25:27.521Z' spid: type: string description: New service provider spid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 support_key: type: string description: A key to reference this port out request when contacting Telnyx customer support example: PO_764725 status: type: string description: Status of portout request enum: - pending - authorized - ported - rejected - rejected-pending - canceled example: rejected already_ported: type: boolean description: Is true when the number is already ported example: false user_id: type: string format: uuid description: Identifies the user (or organization) who requested the port out example: 7865816a-ee85-4e50-b19e-52983dcc6d4a vendor: type: string description: Telnyx partner providing network coverage format: uuid example: 0e66ed3b-37e6-4fed-93d6-a30ce2493661 created_at: type: string description: ISO 8601 formatted date of when the portout was created example: '2018-02-02T22:25:27.521Z' inserted_at: type: string description: ISO 8601 formatted date of when the portout was created example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date of when the portout was last updated example: '2018-02-02T22:25:27.521Z' host_messaging: type: boolean description: Indicates whether messaging services should be maintained with Telnyx after the port out completes default: false example: false PortoutEvent: type: object oneOf: - $ref: '#/components/schemas/WebhookPortoutStatusChanged' - $ref: '#/components/schemas/WebhookPortoutNewComment' - $ref: '#/components/schemas/WebhookPortoutFocDateChanged' discriminator: propertyName: event_type mapping: portout.status_changed: '#/components/schemas/WebhookPortoutStatusChanged' portout.new_comment: '#/components/schemas/WebhookPortoutNewComment' portout.foc_date_changed: '#/components/schemas/WebhookPortoutFocDateChanged' PortoutRejection: type: object properties: code: type: integer example: 1002 description: type: string example: Invalid PIN reason_required: type: boolean example: false PortoutReport: type: object properties: id: type: string description: Uniquely identifies the report. format: uuid example: eef3340b-8903-4466-b445-89b697315a3a report_type: type: string description: Identifies the type of report enum: - export_portouts_csv example: export_portouts_csv status: type: string description: The current status of the report generation. enum: - pending - completed example: completed params: oneOf: - $ref: '#/components/schemas/ExportPortoutsCSVReport' document_id: type: string format: uuid description: Identifies the document that was uploaded when report was generated. This field is only populated when the report is under completed status. example: f1486bae-f067-460c-ad43-73a92848f902 record_type: type: string example: portout_report description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' PostConversationSettings: type: object description: Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute final tool calls such as sending a summary or updating a record via webhook or function tools. Integration and MCP server tools are not available post-conversation; call-control tools (e.g. hangup, transfer) are also unavailable. Beta feature. properties: enabled: type: boolean description: Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false. default: false PostConversationSettingsReq: type: object description: Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute final tool calls such as sending a summary or updating a record via webhook or function tools. Integration and MCP server tools are not available post-conversation; call-control tools (e.g. hangup, transfer) are also unavailable. Beta feature. properties: enabled: type: boolean description: Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false. default: false PresignedObjectUrl: type: object properties: content: type: object properties: token: type: string description: The token for the object presigned_url: type: string description: The presigned URL for the object expires_at: type: string description: The expiration time of the token format: date-time PresignedObjectUrlParams: type: object properties: ttl: type: integer description: The time to live of the token in seconds minimum: 1 maximum: 604800 example: 60 PreviewSummaryRequest: properties: instructions: anyOf: - type: string maxLength: 2000 - type: 'null' title: Instructions description: The candidate note to try. `null`, empty, or whitespace-only previews the neutral default -- the summary a profile returns to when instructions are cleared. Capped at 2000 characters, the same cap `PATCH /settings` applies on save; a longer note is refused with `422` before anything is generated. type: object title: PreviewSummaryRequest description: A candidate note to preview against one profile. The field is optional; omitting it, or sending null/empty/whitespace, previews the neutral default. PreviewSummaryResponse: properties: data: $ref: '#/components/schemas/PreviewedSummary' type: object required: - data title: PreviewSummaryResponse PreviewedSummary: properties: profile_id: type: string title: Profile Id text: anyOf: - type: string - type: 'null' title: Text description: The summary this profile would carry under the candidate note. Null when nothing was generated -- the same signal `GET /summary` uses for a profile with no card yet. type: object required: - profile_id - text title: PreviewedSummary PricingEntry: type: object description: A single pricing entry. Standard products include rate, unit, currency, type, country_iso, direction, and tiers. Inference products include model, input_rate, output_rate, cached_input_rate, and their respective tier arrays. Rate-deck products include pricing_type and note fields with null rate and empty tiers. properties: name: type: string description: Human-readable name describing the pricing entry. rate: oneOf: - type: number description: Rate for standard products (e.g., 0.004). - type: string description: Rate for inference products (e.g., "0.001"). - type: 'null' description: Per-unit rate. Numeric for standard products, string for inference products. Null for rate-deck products. unit: type: string description: Unit of measurement (e.g., part, message, GB, per_1k_tokens). currency: type: string description: ISO currency code (e.g., USD). type: type: string description: Pricing type (e.g., usage). country_iso: type: - string - 'null' description: ISO country code. Null for non-geographic products. direction: type: - string - 'null' description: Direction (e.g., termination). Null for non-directional products. tiers: type: array items: $ref: '#/components/schemas/PricingTier' description: Volume-based tiered pricing. Empty for rate-deck products. pricing_type: type: - string - 'null' description: Pricing type for non-standard products (e.g., rate_deck). Absent on standard products. note: type: - string - 'null' description: Additional note for rate-deck products (e.g., "Pricing is determined by the WhatsApp rate deck."). model: type: string description: Model identifier. Present only on inference product entries. input_rate: type: string description: Input token rate. Present only on inference product entries. cached_input_rate: type: string description: Cached input token rate. Present only on inference product entries. output_rate: type: string description: Output token rate. Present only on inference product entries. input_tiers: type: array items: $ref: '#/components/schemas/PricingTier' description: Input token tiered pricing. Present only on inference product entries. cached_input_tiers: type: array items: $ref: '#/components/schemas/PricingTier' description: Cached input token tiered pricing. Present only on inference product entries. output_tiers: type: array items: $ref: '#/components/schemas/PricingTier' description: Output token tiered pricing. Present only on inference product entries. PricingEntryListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/PricingEntry' meta: $ref: '#/components/schemas/pricing_PaginationMeta' required: - data - meta PricingProduct: type: object properties: slug: type: string description: Product identifier used in the per-product pricing endpoint. name: type: string description: Display name of the product. description: type: string description: Human-readable description of the product. required: - slug - name - description PricingProductListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/PricingProduct' meta: $ref: '#/components/schemas/pricing_PaginationMeta' required: - data - meta PricingTier: type: object properties: min: type: integer minimum: 0 description: Lower bound of the tier (inclusive). max: type: - integer - 'null' description: Upper bound of the tier (exclusive). Null means no upper limit. rate: oneOf: - type: number - type: string description: Rate for this tier. Numeric for standard products, string for inference products. required: - min - max - rate PrivacySettings: properties: data_retention: type: boolean description: If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here. pii_redaction: type: string enum: - disabled - redact default: disabled description: 'Controls redaction of personally identifiable information (PII) from the conversation history that is stored for this assistant. `disabled` (default) stores content as-is. `redact` replaces detected PII with `` placeholders (e.g. ``, ``) as the stored copies are written: message content (user, assistant, and tool-result messages) and tool-call arguments are redacted when written to conversation history, so the stored transcript, its read-back via the history API, and any insights generated from the stored messages contain the placeholders instead of the PII; response bodies returned by webhook tools are redacted too, as stored in the webhook logs — a per-conversation record separate from the transcript. In the Mission Control Portal this field appears as a "PII Redaction" on/off toggle, where Enabled corresponds to `redact`. Redaction runs when the stored copy is written, after the LLM has generated its reply: the live conversation is not redacted, the assistant''s tools keep receiving the full (unredacted) values during the call, and the LLM still sees full content in its context window. Call recordings (including any recording layout configured under telephony settings) and the payloads of messages/webhooks delivered during the call are never redacted by this setting. The set of detected PII types (names, street addresses, phone numbers, email addresses, government identifiers like SSN and driver''s license numbers, credit card and bank account numbers, IP addresses, dates of birth, and other identifiers unique to a person) is fixed by Telnyx and cannot be configured or extended per assistant. Assistants with `redact` cannot be used for SMS/WhatsApp messaging (that combination is rejected with a 400 error); voice and web chat are unaffected.' in_transit_data_locality: type: boolean default: false description: 'Requires every model call made for a web chat turn to be received and served inside your organization''s data-locality region, rather than only stored there. Applies to web chat only — voice and messaging assistants are unaffected. Enabling it requires a data-locality region with in-region inference (USA, EU, AUS, UAE; see [Inference regions](https://developers.telnyx.com/docs/inference/models/regions)) and Telnyx-hosted models for the assistant, its fallback, and any conversation-flow node that overrides the model; the request is rejected otherwise. Once enabled, send chat requests to your region''s API hostname: a request entering the platform in another region is rejected rather than forwarded, because forwarding it would already have moved the content across the border. Defaults to false.' type: object PrivateWirelessGateway: type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 network_id: type: string format: uuid description: The identification of the related network resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string readOnly: true example: private_wireless_gateway created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' name: description: The private wireless gateway name. type: string example: My private wireless gateway region_code: description: The name of the region where the Private Wireless Gateway is deployed. type: string example: dc2 default: null status: $ref: '#/components/schemas/PrivateWirelessGatewayStatus' ip_range: type: string description: IP block used to assign IPs to the SIM cards in the Private Wireless Gateway. example: 100.64.1.0/24 readOnly: true default: null assigned_resources: type: array description: A list of the resources that have been assigned to the Private Wireless Gateway. items: $ref: '#/components/schemas/PWGAssignedResourcesSummary' PrivateWirelessGatewayStatus: type: object description: The current status or failure details of the Private Wireless Gateway. properties: value: type: string description: "The current status or failure details of the Private Wireless Gateway.
    \n
  • provisioning\ \ - the Private Wireless Gateway is being provisioned.
  • \n
  • provisioned - the Private Wireless\ \ Gateway was provisioned and able to receive connections.
  • \n
  • failed - the provisioning had\ \ failed for a reason and it requires an intervention.
  • \n
  • decommissioning - the Private Wireless\ \ Gateway is being removed from the network.
  • \n
\n Transitioning between the provisioning and provisioned\ \ states may take some time." enum: - provisioning - provisioned - failed - decommissioning readOnly: true default: provisioning example: provisioned error_description: type: - string - 'null' description: This attribute provides a human-readable explanation of why a failure happened. readOnly: true default: null example: null error_code: type: - string - 'null' description: This attribute is an [error code](https://developers.telnyx.com/docs/development/api-fundamentals/api-errors) related to the failure reason. readOnly: true default: null example: null Profile: properties: profile_id: type: string title: Profile Id memory_count: type: integer title: Memory Count description: Memories stored under this profile, including the consolidated ones that paraphrase others. Listings are ordered by it. type: object required: - profile_id - memory_count title: Profile ProfileAssignmentPhoneNumbers: title: ProfileAssignmentPhoneNumbers required: - taskId - phoneNumber - status type: object properties: taskId: title: Taskid type: string description: The ID of the task associated with the phone number. example: 667a80f8-b0a9-49d0-b9ab-a7a1bcc45086 phoneNumber: title: Phonenumber type: string description: The phone number that the status is being checked for. example: '+12024567890' status: title: Status type: string description: The status of the associated phone number assignment. example: pending ProfileListResponse: properties: data: items: $ref: '#/components/schemas/Profile' type: array title: Data meta: $ref: '#/components/schemas/PageMeta' type: object required: - data - meta title: ProfileListResponse ProfileMetrics: type: object description: Detailed metrics for a messaging profile. additionalProperties: true ProfileMetricsHighLevel: type: object description: High-level metrics summary for a messaging profile. additionalProperties: true ProfileSummary: properties: profile_id: type: string title: Profile Id text: anyOf: - type: string - type: 'null' title: Text description: The precomputed summary, ready to place in an assistant's context at the start of a session. generated_at: anyOf: - type: string - type: 'null' title: Generated At description: When the summary was last generated. Null while none is ready. is_stale: type: boolean title: Is Stale description: Whether newer memories have arrived since the summary was generated. The summary is regenerated in the background, so a true here is ordinary and the summary is still usable. type: object required: - profile_id - is_stale title: ProfileSummary PromptSyncStatus: type: string enum: - enabled - disabled title: PromptSyncStatus description: 'Whether to auto-publish the assistant''s instructions as a Langfuse prompt. When ENABLED + prompt_name set, every assistant create/update pushes `instructions` to Langfuse via create_prompt and stores the returned version in prompt_version.' PronunciationDictAliasItem: type: object description: An alias pronunciation item. When the `text` value is found in input, it is replaced with the `alias` before speech synthesis. required: - text - type - alias additionalProperties: false properties: text: type: string description: The text to match in the input. Case-insensitive matching is used during synthesis. minLength: 1 maxLength: 200 example: Telnyx type: type: string description: The item type. enum: - alias example: alias alias: type: string description: The replacement text that will be spoken instead. minLength: 1 maxLength: 500 example: tel-nicks PronunciationDictData: type: object description: A pronunciation dictionary record. properties: record_type: type: string description: Identifies the resource type. enum: - pronunciation_dict example: pronunciation_dict id: type: string format: uuid description: Unique identifier for the pronunciation dictionary. example: c215a3e1-be41-4701-97e8-1d3c22f9a5b7 name: type: string description: Human-readable name for the dictionary. Must be unique within the organization. example: Brand Names items: type: array description: List of pronunciation items (alias or phoneme type). items: $ref: '#/components/schemas/PronunciationDictItem' version: type: integer description: Auto-incrementing version number. Increases by 1 on each update. Used for optimistic concurrency control and cache invalidation. example: 1 created_at: type: string format: date-time description: ISO 8601 timestamp with millisecond precision. example: '2026-03-25T12:00:00.000Z' updated_at: type: string format: date-time description: ISO 8601 timestamp with millisecond precision. example: '2026-03-25T12:00:00.000Z' PronunciationDictItem: description: A single pronunciation dictionary item. Use type 'alias' to replace matched text with a spoken alias, or type 'phoneme' to specify exact pronunciation using IPA notation. oneOf: - $ref: '#/components/schemas/PronunciationDictAliasItem' - $ref: '#/components/schemas/PronunciationDictPhonemeItem' discriminator: propertyName: type mapping: alias: '#/components/schemas/PronunciationDictAliasItem' phoneme: '#/components/schemas/PronunciationDictPhonemeItem' PronunciationDictListResponse: type: object description: Paginated list of pronunciation dictionaries. properties: data: type: array items: $ref: '#/components/schemas/PronunciationDictData' description: Array of pronunciation dictionary objects. meta: $ref: '#/components/schemas/pronunciation-dicts_PaginationMeta' PronunciationDictPhonemeItem: type: object description: A phoneme pronunciation item. When the `text` value is found in input, it is pronounced using the specified IPA phoneme notation. required: - text - type - phoneme - alphabet additionalProperties: false properties: text: type: string description: The text to match in the input. Case-insensitive matching is used during synthesis. minLength: 1 maxLength: 200 example: Telnyx type: type: string description: The item type. enum: - phoneme example: phoneme phoneme: type: string description: The phoneme notation representing the desired pronunciation. minLength: 1 maxLength: 500 example: ˈtɛl.nɪks alphabet: type: string description: The phonetic alphabet used for the phoneme notation. enum: - ipa example: ipa PronunciationDictResponse: type: object description: Response containing a single pronunciation dictionary. properties: data: $ref: '#/components/schemas/PronunciationDictData' PublicInternetGateway: allOf: - $ref: '#/components/schemas/Record' - $ref: '#/components/schemas/Interface' - type: object title: PublicInternetGateway properties: region_code: description: The region interface is deployed to. type: string example: ashburn-va record_type: type: string description: Identifies the type of the resource. readOnly: true example: public_internet_gateway public_ip: description: The publically accessible ip for this interface. type: string example: 127.0.0.1 readOnly: true PublicInternetGatewayCreate: allOf: - $ref: '#/components/schemas/PublicInternetGateway' - type: object title: PublicInternetGatewayCreate PublicInternetGatewayRead: allOf: - $ref: '#/components/schemas/PublicInternetGateway' PublicTextClusteringRequest: properties: bucket: type: string description: The embedded storage bucket to compute the clusters from. The bucket must already be [embedded](https://developers.telnyx.com/api-reference/embeddings/embed-documents). prefix: type: string description: Prefix to filter whcih files in the buckets are included. files: items: type: string type: array description: Array of files to filter which are included. min_cluster_size: type: integer description: Smallest number of related text chunks to qualify as a cluster. Top-level clusters should be thought of as identifying broad themes in your data. default: 25 min_subcluster_size: type: integer description: Smallest number of related text chunks to qualify as a sub-cluster. Sub-clusters should be thought of as identifying more specific topics within a broader theme. default: 5 type: object required: - bucket title: PublicTextClusteringRequest PushCredential: type: object title: Successful response with details about a push credential required: - id - certificate - private_key - project_account_json_file - alias - type - record_type - created_at - updated_at properties: id: description: Unique identifier of a push credential type: string example: 0ccc7b54-4df3-4bcb-a65a-3da1ecc997d7 certificate: description: Apple certificate for sending push notifications. For iOS only type: string example: '-----BEGIN CERTIFICATE----- MIIGVDCCBTKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END CERTIFICATE-----' private_key: description: Apple private key for a given certificate for sending push notifications. For iOS only type: string example: '-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END RSA PRIVATE KEY-----' project_account_json_file: description: Google server key for sending push notifications. For Android only type: object example: private_key: BBBB0J56jd8kda:APA91vjb11BCjvxx3Jxja... client_email: account@customer.org additionalProperties: true alias: description: Alias to uniquely identify a credential type: string example: LucyCredential type: description: Type of mobile push credential. Either ios or android type: string example: ios record_type: type: string example: push_credential readOnly: true created_at: description: ISO 8601 timestamp when the room was created type: string format: date-time example: '2021-03-26T17:51:59.588408Z' updated_at: description: ISO 8601 timestamp when the room was updated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' PushCredentialResponse: description: Success response with details about a push credential properties: data: $ref: '#/components/schemas/PushCredential' type: object Quality: description: The quality of the fax. The `ultra` settings provides the highest quality available, but also present longer fax processing times. `ultra_light` is best suited for images, wihle `ultra_dark` is best suited for text. type: string example: high default: high enum: - normal - high - very_high - ultra_light - ultra_dark QueryParameterInfo: type: object required: - type - default - description properties: type: type: string default: type: string min: type: - integer - 'null' max: type: - integer - 'null' enum_values: type: - array - 'null' items: type: string description: type: string Queue: type: object title: Queue required: - record_type - id - name - current_size - max_size - average_wait_time_secs - created_at - updated_at properties: record_type: type: string enum: - queue example: queue id: type: string description: Uniquely identifies the queue example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: type: string description: Name of the queue example: support created_at: type: string description: ISO 8601 formatted date of when the queue was created example: '2019-01-23T18:10:02.574Z' updated_at: type: string description: ISO 8601 formatted date of when the queue was last updated example: '2019-01-23T18:10:02.574Z' current_size: type: integer description: The number of calls currently in the queue example: 20 max_size: type: integer description: The maximum number of calls allowed in the queue example: 50 average_wait_time_secs: type: integer description: The average time that the calls currently in the queue have spent waiting, given in seconds. example: 175 example: record_type: queue id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: support created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' current_size: 20 max_size: 50 average_wait_time_secs: 175 QueueCall: type: object title: QueueCall required: - call_control_id - call_leg_id - call_session_id - is_alive - record_type - connection_id - from - to - enqueued_at - wait_time_secs - queue_position - queue_id example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768 call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768 record_type: queue_call connection_id: 7267xxxxxxxxxxxxxx from: '+18005550101' to: '+18005550102' enqueued_at: '2019-01-23T18:10:02.574Z' wait_time_secs: 145 queue_position: 3 queue_id: ae1626cc-6f42-11ea-becd-02420a0f8b69 is_alive: true properties: record_type: type: string enum: - queue_call example: queue_call call_session_id: description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call type: string example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1 call_leg_id: description: ID that is unique to the call and can be used to correlate webhook events type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_control_id: description: Unique identifier and token for controlling the call. type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. from: type: string example: '+35319605860' description: Number or SIP URI placing the call. to: type: string example: '+13129457420' description: Destination number or SIP URI of the call. enqueued_at: type: string description: ISO 8601 formatted date of when the call was put in the queue example: '2019-01-23T18:10:02.574Z' wait_time_secs: type: integer description: The time the call has been waiting in the queue, given in seconds example: 272 queue_position: type: integer description: Current position of the call in the queue example: 3 queue_id: type: string description: Unique identifier of the queue the call is in. example: ae1626cc-6f42-11ea-becd-02420a0f8b69 is_alive: type: boolean description: Indicates whether the call is still active in the queue. example: true QueueResource: type: object title: Queue resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 average_wait_time: 30 current_size: 3 date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 max_size: 10 sid: my-queue uri: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json subresource_uris: members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 4e71926f-8f13-450e-b91c-23c2ef786aa6 average_wait_time: type: integer description: The average wait time in seconds for members in the queue. example: 30 current_size: type: integer description: The current number of members in the queue. example: 3 date_created: type: string description: The timestamp of when the resource was created. example: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Fri, 27 Oct 2023 07:41:58 +0000 max_size: type: integer description: The maximum size of the queue. example: 10 sid: type: string description: The unique identifier of the queue. example: my-queue uri: type: string description: The relative URI for this queue. example: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json subresource_uris: type: object description: A list of related resources identified by their relative URIs. example: members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json additionalProperties: true QueueResourceIndex: type: object title: Multiple queue resources example: queues: [] end: 0 first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ page: 0 page_size: 1 start: 0 uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 properties: queues: type: array items: $ref: '#/components/schemas/QueueResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: 19 first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: 0 page_size: type: integer description: The number of items on the page example: 20 start: type: integer description: The number of the first element on the page, zero-indexed. example: 0 uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 RCSAction: type: object description: When tapped, initiates the corresponding native action on the device. properties: text: type: string description: Text that is shown in the suggested action. Maximum 25 characters. example: Hello world postback_data: type: string description: Payload (base64 encoded) that will be sent to the agent in the user event that results when the user taps the suggested action. Maximum 2048 characters. fallback_url: type: string description: Fallback URL to use if a client doesn't support a suggested action. Fallback URLs open in new browser windows. Maximum 2048 characters. format: url dial_action: $ref: '#/components/schemas/RCSDialAction' view_location_action: $ref: '#/components/schemas/RCSViewLocationAction' create_calendar_event_action: $ref: '#/components/schemas/RCSCreateCalendarEventAction' open_url_action: $ref: '#/components/schemas/RCSOpenUrlAction' share_location_action: $ref: '#/components/schemas/RCSShareLocationAction' RCSAgent: type: object properties: agent_id: type: string description: RCS Agent ID example: TestAgent user_id: type: string description: User ID associated with the RCS Agent example: 2ecf295b-36c6-4d43-ad05-71eb1e560518 profile_id: type: - string - 'null' format: uuid description: Messaging profile ID associated with the RCS Agent example: 4001932a-b8a3-42fc-9389-021be6388909 webhook_url: type: - string - 'null' format: url description: URL to receive RCS events example: http://example.com webhook_failover_url: type: - string - 'null' format: url description: Failover URL to receive RCS events example: http://example.com agent_name: type: string description: Human readable agent name example: Test Agent enabled: type: boolean description: Specifies whether the agent is enabled example: true created_at: type: string format: date-time description: Date and time when the resource was created example: '2024-01-01T12:00:00.000Z' updated_at: type: string format: date-time description: Date and time when the resource was updated example: '2024-01-01T12:00:00.000Z' RCSAgentMessage: type: object properties: content_message: $ref: '#/components/schemas/RCSContentMessage' event: $ref: '#/components/schemas/RCSEvent' expire_time: type: string format: date-time description: Timestamp in UTC of when this message is considered expired example: '2024-10-02T15:01:23Z' ttl: type: string description: Duration in seconds ending with 's' example: 10.5s RCSAgentResponse: type: object properties: data: $ref: '#/components/schemas/RCSAgent' RCSAgentUpdate: type: object properties: profile_id: type: - string - 'null' format: uuid description: Messaging profile ID associated with the RCS Agent example: 4001932a-b8a3-42fc-9389-021be6388909 webhook_url: type: - string - 'null' format: url description: URL to receive RCS events example: http://example.com webhook_failover_url: type: - string - 'null' format: url description: Failover URL to receive RCS events example: http://example.com RCSAgentsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/RCSAgent' meta: $ref: '#/components/schemas/messaging_PaginationMeta' RCSCapabilitiesBulk: type: object properties: data: type: array items: $ref: '#/components/schemas/RCSCapabilitiesInternal' RCSCapabilitiesInternal: type: object properties: record_type: type: string example: rcs.capabilities enum: - rcs.capabilities description: Identifies the type of the resource phone_number: type: string example: '+13125551234' description: Phone number agent_id: type: string example: TestAgent description: RCS agent ID agent_name: type: string example: Testing agent description: RCS agent name features: type: array description: List of RCS capabilities items: type: string RCSCapabilitiesSingle: type: object properties: data: $ref: '#/components/schemas/RCSCapabilitiesInternal' RCSCapabilityListRequest: type: object required: - agent_id - phone_numbers properties: agent_id: type: string description: RCS Agent ID example: TestAgent phone_numbers: type: array items: type: string example: '+13125551234' description: List of phone numbers to check RCSCardContent: type: object properties: title: type: string description: Title of the card (at most 200 characters) example: Elephant description: type: string description: Description of the card (at most 2000 characters) media: $ref: '#/components/schemas/RCSMedia' suggestions: type: array description: List of suggestions to include in the card. Maximum 10 suggestions. items: $ref: '#/components/schemas/RCSSuggestion' RCSCarouselCard: required: - card_width - card_contents type: object description: Carousel of cards. properties: card_width: type: string example: SMALL description: The width of the cards in the carousel. enum: - CARD_WIDTH_UNSPECIFIED - SMALL - MEDIUM card_contents: description: The list of contents for each card in the carousel. A carousel can have a minimum of 2 cards and a maximum 10 cards. type: array items: $ref: '#/components/schemas/RCSCardContent' RCSContentInfo: required: - file_url type: object properties: file_url: type: string format: url description: Publicly reachable URL of the file. example: https://example.com/elephant.jpg thumbnail_url: type: string format: url description: Publicly reachable URL of the thumbnail. Maximum size of 100 kB. force_refresh: type: boolean description: If set the URL content will not be cached. RCSContentMessage: type: object properties: suggestions: type: array description: List of suggested actions and replies items: $ref: '#/components/schemas/RCSSuggestion' text: type: string description: Text (maximum 3072 characters) example: Hello world! rich_card: $ref: '#/components/schemas/RCSRichCard' content_info: $ref: '#/components/schemas/RCSContentInfo' RCSCreateCalendarEventAction: type: object description: Opens the user's default calendar app and starts the new calendar event flow with the agent-specified event data pre-filled. properties: start_time: type: string format: date-time example: '2024-10-02T15:01:23Z' end_time: type: string format: date-time example: '2024-10-02T15:02:31Z' title: type: string description: Event title. Maximum 100 characters. description: type: string description: Event description. Maximum 500 characters. RCSDeeplinkResponse: type: object properties: data: type: object properties: url: type: string description: The generated deeplink URL example: sms:+18445550001?service_id=my_agent_id%40rbm.goog&body=hello%20world required: - url required: - data RCSDialAction: required: - phone_number type: object description: Opens the user's default dialer app with the agent-specified phone number filled in. properties: phone_number: type: string description: Phone number in +E.164 format example: '+13125551234' RCSEvent: type: object description: RCS Event to send to the recipient properties: event_type: type: string example: IS_TYPING enum: - TYPE_UNSPECIFIED - IS_TYPING - READ RCSFrom: type: object properties: agent_id: type: string example: Agent007 description: agent ID carrier: type: string example: Telnyx agent_name: type: string example: Test Agent RCSLatLng: required: - latitude - longitude type: object properties: latitude: type: number description: The latitude in degrees. It must be in the range [-90.0, +90.0]. example: 41.8 longitude: type: number description: The longitude in degrees. It must be in the range [-180.0, +180.0]. example: -87.6 RCSMedia: type: object description: A media file within a rich card. properties: height: type: string example: MEDIUM description: The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored. enum: - HEIGHT_UNSPECIFIED - SHORT - MEDIUM - TALL content_info: $ref: '#/components/schemas/RCSContentInfo' RCSMessage: required: - agent_id - to - messaging_profile_id - agent_message type: object properties: agent_id: type: string description: RCS Agent ID example: Agent007 to: type: string description: Phone number in +E.164 format example: '+13125551234' messaging_profile_id: type: string description: A valid messaging profile ID type: type: string description: Message type - must be set to "RCS" example: RCS enum: - RCS webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url agent_message: $ref: '#/components/schemas/RCSAgentMessage' sms_fallback: $ref: '#/components/schemas/SMSFallback' mms_fallback: $ref: '#/components/schemas/MMSFallback' RCSOpenUrlAction: required: - url - application - webview_view_mode type: object description: Opens the user's default web browser app to the specified URL. properties: url: type: string format: url example: http://example.com application: type: string example: BROWSER description: URL open application, browser or webview. enum: - OPEN_URL_APPLICATION_UNSPECIFIED - BROWSER - WEBVIEW webview_view_mode: type: string example: HALF enum: - WEBVIEW_VIEW_MODE_UNSPECIFIED - FULL - HALF - TALL description: type: string description: Accessbility description for webview. RCSReply: type: object properties: text: type: string description: Text that is shown in the suggested reply (maximum 25 characters) postback_data: type: string description: Payload (base64 encoded) that will be sent to the agent in the user event that results when the user taps the suggested action. Maximum 2048 characters. RCSResponse: type: object properties: data: type: object properties: record_type: type: string example: message direction: type: string example: outbound id: type: string description: message ID example: 4031938e-60e4-4235-a8dd-0b1c55a23e7a type: type: string example: RCS organization_id: type: string example: 9f61d8e1-7687-4d6d-9cae-9ff682985983 messaging_profile_id: type: string example: 4001781e-626f-4a41-a914-b1b682150f94 from: $ref: '#/components/schemas/RCSFrom' to: $ref: '#/components/schemas/RCSTo' body: $ref: '#/components/schemas/RCSAgentMessage' encoding: type: string example: utf-8 received_at: type: string format: date-time wait_seconds: type: - number - 'null' format: float description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay. example: 0.5 RCSRichCard: type: object properties: carousel_card: $ref: '#/components/schemas/RCSCarouselCard' standalone_card: $ref: '#/components/schemas/RCSStandaloneCard' RCSShareLocationAction: type: object description: Opens the RCS app's location chooser so the user can pick a location to send back to the agent. RCSStandaloneCard: required: - card_orientation - thumbnail_image_alignment - card_content type: object description: Standalone card properties: card_orientation: type: string example: HORIZONTAL description: Orientation of the card. enum: - CARD_ORIENTATION_UNSPECIFIED - HORIZONTAL - VERTICAL thumbnail_image_alignment: type: string example: LEFT description: Image preview alignment for standalone cards with horizontal layout. enum: - THUMBNAIL_IMAGE_ALIGNMENT_UNSPECIFIED - LEFT - RIGHT card_content: $ref: '#/components/schemas/RCSCardContent' RCSSuggestion: type: object properties: reply: $ref: '#/components/schemas/RCSReply' action: $ref: '#/components/schemas/RCSAction' RCSTestNumberInviteResponse: type: object properties: data: type: object properties: record_type: type: string example: rcs.test_number_invite enum: - rcs.test_number_invite description: Identifies the type of the resource agent_id: type: string example: TestAgent description: RCS agent ID phone_number: type: string example: '+13125551234' description: Phone number that was invited for testing status: type: string example: PENDING description: Status of the test number invitation required: - data RCSTo: type: array items: $ref: '#/components/schemas/RCSToItem' RCSToItem: type: object properties: phone_number: type: string example: '+13125551234' status: type: string example: queued carrier: type: string example: Verizon Wireless line_type: type: string example: Wireless RCSViewLocationAction: type: object description: Opens the user's default map app and selects the agent-specified location. properties: lat_long: $ref: '#/components/schemas/RCSLatLng' label: type: string description: The label of the pin dropped query: type: string description: query string (Android only) ReadComment: $ref: '#/components/schemas/Comment' Reason: type: string enum: - hard_bounce - spam_complaint - unsubscribe - invalid - manual_block RecallRequest: properties: query: type: string maxLength: 4096 minLength: 1 title: Query top_k: anyOf: - type: integer maximum: 100.0 minimum: 1.0 - type: 'null' title: Top K type: object required: - query title: RecallRequest RecallResponse: properties: data: items: $ref: '#/components/schemas/RecalledMemory' type: array title: Data type: object required: - data title: RecallResponse RecalledMemory: properties: id: type: string title: Id text: type: string title: Text recorded_at: anyOf: - type: string - type: 'null' title: Recorded At score: anyOf: - type: number minimum: 0 maximum: 1 - type: 'null' title: Score description: Relevance, 0-1. Null where the deployment's reranker is a passthrough; results are in rank order either way. type: object required: - id - text title: RecalledMemory RecipientSuppressedError: type: object description: Non-standard error envelope returned when all recipients are suppressed and ignore_suppression was not set/allowed. Includes a top-level `suppressed` array alongside `errors`. properties: errors: type: array items: type: object properties: code: type: string enum: - recipient_suppressed title: type: string detail: type: string suppressed: type: array items: type: object properties: to: type: string format: email reason: type: string scope: type: string override_allowed: type: boolean Record: type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string description: Identifies the type of the resource. readOnly: true example: sample_record_type created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' RecordType: type: string description: Identifies record type. enum: - custom_storage_credentials RecordTypeInfo: type: object required: - record_type - aliases - product - event - description - child_relationships - parent_relationships properties: record_type: type: string aliases: type: array items: type: string product: type: string event: type: string description: type: string child_relationships: type: array items: $ref: '#/components/schemas/ChildRelationshipInfo' parent_relationships: type: array items: $ref: '#/components/schemas/ParentRelationshipInfo' RecordTypeMetadataResponse: type: object required: - record_type - aliases - product - event - child_relationships - parent_relationships - examples - meta properties: record_type: type: string aliases: type: array items: type: string product: type: string event: type: string child_relationships: type: array items: $ref: '#/components/schemas/ChildRelationshipInfo' parent_relationships: type: array items: $ref: '#/components/schemas/ParentRelationshipInfo' examples: type: object additionalProperties: true description: Example queries and responses for this record type. meta: $ref: '#/components/schemas/RelationshipMetadata' RecordingResponse: type: object title: RecordingResponse properties: data: $ref: '#/components/schemas/RecordingResponseData' RecordingResponseData: type: object title: RecordingResponseData properties: call_control_id: type: string example: v3:e-31OnvjEM7Y4wvxr3TKNk8M3QyLcGZPiUIzCGtwQtOtEjY-B0urkw description: Unique identifier and token for controlling the call. call_leg_id: type: string example: 84a97d76-e40f-11ed-9074-02420a0daa69 description: ID unique to the call leg (used to correlate webhook events). call_session_id: type: string example: 84a97d76-e40f-11ed-9074-02420a0daa69 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. channels: type: string enum: - single - dual description: When `dual`, the final audio file has the first leg on channel A, and the rest on channel B. example: dual conference_id: type: string example: 84a97d76-e40f-11ed-9074-02420a0daa69 description: Uniquely identifies the conference. created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' download_urls: type: object description: Links to download the recording files. properties: mp3: type: string description: Link to download the recording in mp3 format. wav: type: string description: Link to download the recording in wav format. duration_millis: description: The duration of the recording in milliseconds. type: integer format: int32 example: 60000 id: type: string description: Uniquely identifies the recording. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: type: string enum: - recording example: recording recording_started_at: type: string description: ISO 8601 formatted date of when the recording started. example: '2019-01-23T18:10:02.574Z' recording_ended_at: type: string description: ISO 8601 formatted date of when the recording ended. example: '2019-01-23T18:10:02.574Z' source: type: string enum: - conference - call description: The kind of event that led to this recording being created. example: conference status: type: string enum: - completed description: The status of the recording. Only `completed` recordings are currently supported. example: completed from: type: string description: The `from` (caller) number for the call that generated this recording. example: '+15551234567' to: type: string description: The `to` (callee) number for the call that generated this recording. example: '+15557654321' connection_id: type: string description: Identifies the Telnyx application (Call Control, TeXML) or SIP connection resource associated with this recording. example: '175237942907135762' initiated_by: type: string description: Indicates what triggered the recording. Possible values include `DialVerb`, `Conference`, `OutboundAPI`, `Trunking`, `RecordVerb`, `StartCallRecordingAPI`, `StartConferenceRecordingAPI`. example: StartCallRecordingAPI updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' RecordingSource: type: string description: Defines how the recording was created. enum: - StartCallRecordingAPI - StartConferenceRecordingAPI - OutboundAPI - DialVerb - Conference - RecordVerb - Trunking RecordingStatusCallbackEvent: description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.' example: in-progress completed absent type: string RecordingTrack: description: The audio track to record for the call. The default is `both`. example: inbound type: string enum: - inbound - outbound - both RecordingTranscription: type: object title: RecordingTranscriptionsResponseData properties: created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' duration_millis: description: The duration of the recording transcription in milliseconds. type: integer format: int32 example: 60000 id: type: string description: Uniquely identifies the recording transcription. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 recording_id: type: string description: Uniquely identifies the recording associated with this transcription. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: type: string enum: - recording_transcription example: recording_transcription status: type: string enum: - in-progress - completed description: The status of the recording transcription. Only `completed` has transcription text available. example: completed transcription_text: type: string description: The recording's transcribed text. example: Good morning, how may I help you? updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' RecursiveCluster: properties: cluster_id: type: string cluster_header: type: string cluster_summary: type: string nodes: items: $ref: '#/components/schemas/ClusterNode' type: array total_number_of_nodes: type: integer subclusters: items: $ref: '#/components/schemas/RecursiveCluster' type: array type: object required: - cluster_id - cluster_summary - total_number_of_nodes title: RecursiveCluster ReferRequest: type: object title: Refer request required: - sip_address properties: sip_address: description: The SIP URI to which the call will be referred to. type: string example: sip:username@sip.non-telnyx-address.com client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string command_id: description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string custom_headers: description: Custom headers to be added to the SIP INVITE. type: array example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' sip_auth_username: description: SIP Authentication username used for SIP challenges. type: string sip_auth_password: description: SIP Authentication password used for SIP challenges. type: string sip_headers: description: SIP headers to be added to the request. Currently only User-to-User header is supported. type: array example: - name: User-to-User value: value items: $ref: '#/components/schemas/SipHeader' example: sip_address: sip:username@sip.non-telnyx-address.com Reference: type: object description: A reference (business or financial) on a DIR, in the customer-facing shape. No internal identifiers are exposed. required: - record_type - ref_type - slot - full_name - phone_e164 - timezone properties: record_type: type: string enum: - dir_reference description: Always `dir_reference`. example: dir_reference readOnly: true ref_type: type: string enum: - business - financial description: Whether this is a business reference or the financial reference. example: business slot: type: integer minimum: 1 maximum: 2 description: Position within the reference type, counting from 1. Business references occupy slots 1 and 2, in the order they were sent in the `business_references` array; the financial reference occupies slot 1. Use this value together with `ref_type` to address the reference when updating it. example: 1 full_name: type: string maxLength: 255 description: Full name of the reference contact. example: Dana Reyes job_title: type: string maxLength: 255 nullable: true description: Job title of the reference contact. example: VP of Operations organization: type: string maxLength: 255 nullable: true description: Organization the reference contact belongs to. example: Acme Logistics relationship_to_registrant: type: string maxLength: 255 nullable: true description: How the reference contact is related to the registering business. example: Supplier phone_e164: type: string description: Reference phone number in E.164 format. example: '+14155550123' email: type: string format: email nullable: true description: Reference contact email address. example: dana.reyes@example.com timezone: type: string description: IANA timezone id for the reference. Calls are only placed within the reference's local 8am-9pm window. example: America/New_York ReferenceInput: type: object description: One reference supplied at submit. The reference type is implied by the field that carries it (business_references vs financial_reference). required: - full_name - phone_e164 - email - timezone properties: full_name: type: string minLength: 1 maxLength: 255 description: Full name of the reference contact. example: Dana Reyes job_title: type: string maxLength: 255 nullable: true description: Job title of the reference contact. example: VP of Operations organization: type: string maxLength: 255 nullable: true description: Organization the reference contact belongs to. example: Acme Logistics relationship_to_registrant: type: string maxLength: 255 nullable: true description: How the reference contact is related to the registering business. example: Supplier phone_e164: type: string pattern: ^\+[1-9]\d{1,14}$ description: Reference phone number in E.164 format, e.g. +14155550123. example: '+14155550123' email: type: string format: email description: 'Reference contact email address. Required: the reference is emailed scheduling and dial-in notices.' example: dana.reyes@example.com timezone: type: string description: 'IANA timezone id for the reference (e.g. America/New_York). Required: calls are only placed within the reference''s local 8am-9pm window.' example: America/New_York ReferenceList: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Reference' ReferenceSubmissionRequest: type: object description: Exactly two business references plus one financial reference. required: - business_references - financial_reference properties: business_references: type: array minItems: 2 maxItems: 2 description: 'Exactly two business references. Array order determines each one''s slot: the first entry becomes slot 1 and the second becomes slot 2. Those slots are what you pass when updating a single reference later. Each should be a senior contact who can speak to your company''s reputation and operations: a C-suite executive (CEO, CFO, CTO, COO), an owner or founder as reflected in your corporate records, or a senior manager, director, or executive at an organization you work with, such as a vendor, partner, or client.' items: $ref: '#/components/schemas/ReferenceInput' financial_reference: description: 'One financial reference who can confirm the company pays its bills: a licensed certified public accountant (CPA) the company uses, a contact at a bank or financial institution that has a relationship with the company, or a reasonable alternative banking or financial reference.' allOf: - $ref: '#/components/schemas/ReferenceInput' ReferenceUpdateRequest: type: object minProperties: 1 description: Partial update for a single reference; supply at least one field. Cosmetic fields are always editable. phone_e164 and timezone may only be changed while a scheduled call has not yet been dialed. properties: full_name: type: string minLength: 1 maxLength: 255 description: The full name of the person we should contact as your reference. example: Dana Reyes job_title: type: string maxLength: 255 nullable: true description: The reference contact's job title, for example CFO or Owner. example: VP of Operations organization: type: string maxLength: 255 nullable: true description: The name of the organization the reference contact works for. example: Acme Logistics relationship_to_registrant: type: string maxLength: 255 nullable: true description: How the reference contact is related to the registering business. example: Supplier phone_e164: type: string pattern: ^\+[1-9]\d{1,14}$ description: The reference's phone number in E.164 format, for example +14155550123. We call this number during their local business hours. example: '+14155550123' email: type: string format: email description: The reference's email address. We email them scheduling and dial-in instructions before we call, so use an address they check. example: dana.reyes@example.com timezone: type: string description: The reference's IANA time zone, for example America/New_York. We only call during their local 8am to 9pm hours, which is why we need it. example: America/New_York ReferenceWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/Reference' RefreshReputationRequest: type: object required: - phone_numbers additionalProperties: false properties: phone_numbers: type: array items: type: string example: '+19493253498' minItems: 1 maxItems: 100 description: Phone numbers to refresh reputation data for. 1–100 numbers per request, each in E.164 format. Reputation refreshes are subject to per-enterprise rate limits. RefreshReputationResponse: type: object required: - data properties: data: type: object required: - results - total_requested - total_successful - total_failed properties: results: type: array description: Per-number outcome of the refresh. items: type: object required: - phone_number - success properties: phone_number: type: string example: '+19493253498' success: type: boolean example: true error: type: - string - 'null' description: '`null` when `success` is `true`; carries an error message otherwise.' example: null total_requested: type: integer example: 1 total_successful: type: integer example: 1 total_failed: type: integer example: 0 RefreshRoomClientTokenRequest: type: object properties: token_ttl_secs: description: The time to live in seconds of the Client Token, after that time the Client Token is invalid and can't be used to join a Room. type: integer example: 600 default: 600 minimum: 10 maximum: 3600 refresh_token: type: string example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ required: - refresh_token Region: description: Region where the bucket is located. type: string example: us-east-1 RegionIn: type: object properties: region_code: description: The region the interface should be deployed to. type: string example: ashburn-va RegionInformation: properties: region_type: type: string example: country_code enum: - country_code - rate_center - state - location region_name: type: string example: US example: region_type: country_code region_name: US type: object RegionOut: type: object properties: region_code: description: The region interface is deployed to. type: string example: ashburn-va region: type: object properties: code: description: Region code of the interface. type: string example: ashburn-va name: description: Region name of the interface. type: string example: Ashburn record_type: type: string description: Identifies the type of the resource. readOnly: true example: region RegulatoryRequirement: type: object properties: record_type: type: string requirement_id: type: string format: uuid field_type: type: string RegulatoryRequirements: properties: country_code: type: string example: DE readOnly: true phone_number_type: type: string example: local readOnly: true action: type: string example: ordering readOnly: true regulatory_requirements: type: array items: type: object properties: description: type: string example: Address matching the DID area code (street, building number, postal code, city and country) readOnly: true id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true example: type: string example: 600 Congress Avenue, 14th Floor, Austin, TX 78701 readOnly: true name: type: string example: Address matching the DID area code field_type: type: string example: address_id acceptance_criteria: type: object properties: locality_limit: type: string example: Identical locality as the numbers desired time_limit: type: string example: Less than 5 months old regex: type: string example: regex field value must match case_sensitive: type: string example: Whether field value is case sensitive acceptable_characters: type: string example: Characters that can be included in field value acceptable_values: type: array items: type: string max_length: type: string example: '10' min_length: type: string example: '5' type: object RegulatoryRequirementsPhoneNumbers: properties: phone_number: type: string example: '+41215471644' readOnly: true phone_number_type: type: string example: local readOnly: true region_information: type: array items: type: object properties: region_name: type: string example: CH region_type: type: string example: country_code record_type: type: string example: phone_number_regulatory_requirements readOnly: true regulatory_requirements: type: array items: type: object properties: description: type: string example: Address matching the DID area code (street, building number, postal code, city and country) readOnly: true id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true example: type: string example: 600 Congress Avenue, 14th Floor, Austin, TX 78701 readOnly: true label: type: string example: Address matching the DID area code field_type: type: string example: address_id acceptance_criteria: type: object properties: locality_limit: type: string example: Identical locality as the numbers desired field_value: type: string example: 45f45a04-b4be-4592-95b1-9306b9db2b21 field_type: type: string example: address record_type: type: string example: regulatory_requirement readOnly: true type: object RejectRequest: type: object title: Reject Request required: - cause properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 cause: description: 'Cause for call rejection. The cause sets the SIP response the caller receives: `USER_BUSY` sends 486 User Busy, `CALL_REJECTED` sends 603 Decline, `NOT_FOUND` sends 404 Not Found, and `TEMPORARILY_UNAVAILABLE` sends 480 Temporarily Unavailable.' type: string enum: - CALL_REJECTED - NOT_FOUND - TEMPORARILY_UNAVAILABLE - USER_BUSY example: USER_BUSY example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 cause: USER_BUSY RejectionReason: type: object properties: code: type: string example: documentation_incomplete title: type: string example: Documentation incomplete detail: type: string example: Provided documents do not establish business identity. message: type: string nullable: true description: Customer-visible free-text comment from the Telnyx vetting team. Only the first entry of `rejection_reasons` carries this; the rest are `null`. example: Please re-upload a clearer scan of the certificate. RelationshipInfo: type: object required: - type - via - parent_id properties: type: type: string description: Relationship type identifier. via: $ref: '#/components/schemas/FieldMapping' parent_id: type: string description: Identifier of the parent event. RelationshipMetadata: type: object required: - total_children - total_siblings - total_parents - max_recommended_depth properties: total_children: type: integer total_siblings: type: integer total_parents: type: integer max_recommended_depth: type: integer Release: type: object title: Phone Number Release properties: ticket_id: $ref: '#/components/schemas/UUID' tenant_id: type: string format: uuid example: ea175aba-f47c-4702-9400-efaa42688048 status: type: string enum: - pending_upload - pending - in_progress - complete - failed - expired - unknown description: Represents the status of the release on Microsoft Teams. example: pending default: pending_upload error_message: type: string description: A message set if there is an error with the upload process. telephone_numbers: type: array items: $ref: '#/components/schemas/TnReleaseEntry' created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' RemediationPerNumberResults: type: object description: Per-category buckets of phone numbers, populated once results are available. Empty lists are kept (not omitted) so consumers can iterate without null-checking each key. properties: remediated: type: array items: type: string example: '+19493253498' not_flagged: type: array items: type: string requires_review: type: array items: type: string ineligible: type: array items: type: string refused: type: array items: type: string RemediationRequest: type: object description: Full detail of a remediation request, returned on submit and GET by id. required: - id - status - phone_numbers_count - phone_numbers_submitted - phone_numbers_ineligible - call_purpose - created_at - updated_at properties: id: type: string format: uuid example: b7c1f1c0-7a9d-4f0a-9d3e-2f6a1c4b8e21 status: $ref: '#/components/schemas/RemediationStatus' phone_numbers_count: type: integer description: Total phone numbers in this batch, including any later cancelled. May exceed the sum of the per-category result buckets, which omit cancelled numbers. example: 2 phone_numbers_submitted: type: integer description: Numbers accepted for remediation, i.e. not rejected as ineligible. Counts numbers still queued (pending) as well as processed ones. example: 2 phone_numbers_ineligible: type: integer description: Numbers rejected before submission (e.g. cooldown). example: 0 call_purpose: type: string example: Appointment reminders for our dental clinic. contact_email: type: - string - 'null' format: email example: ops@example.com webhook_url: type: - string - 'null' format: uri example: https://example.com/webhooks/remediation created_at: type: string format: date-time example: '2026-06-01T12:00:00Z' updated_at: type: string format: date-time example: '2026-06-01T12:05:00Z' tier1_completed_at: type: - string - 'null' format: date-time tier2_completed_at: type: - string - 'null' format: date-time results: anyOf: - $ref: '#/components/schemas/RemediationPerNumberResults' - type: 'null' description: Per-category buckets. Populated once results are available. Null while the request is still pending. RemediationRequestCreate: type: object additionalProperties: false required: - phone_numbers - call_purpose properties: phone_numbers: type: array description: Phone numbers in E.164 format. Each must belong to this enterprise. Maximum 2,000 per request. minItems: 1 maxItems: 2000 items: type: string pattern: ^\+[1-9][0-9]{9,14}$ example: '+19493253498' call_purpose: type: string description: How the numbers are used (free text). minLength: 1 maxLength: 2000 example: Appointment reminders for our dental clinic. contact_email: type: string format: email description: Optional contact email for this remediation request. maxLength: 255 example: ops@example.com webhook_url: type: string format: uri description: Optional https:// URL for status notifications. maxLength: 2048 example: https://example.com/webhooks/remediation RemediationRequestList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/RemediationRequestListItem' meta: $ref: '#/components/schemas/number-reputation_PaginationMeta' RemediationRequestListItem: type: object description: Slim list-endpoint shape. Omits per-number results and webhook URLs to keep responses small. required: - id - status - phone_numbers_count - call_purpose - created_at - updated_at properties: id: type: string format: uuid example: b7c1f1c0-7a9d-4f0a-9d3e-2f6a1c4b8e21 status: $ref: '#/components/schemas/RemediationStatus' phone_numbers_count: type: integer example: 2 call_purpose: type: string example: Appointment reminders for our dental clinic. created_at: type: string format: date-time example: '2026-06-01T12:00:00Z' updated_at: type: string format: date-time example: '2026-06-01T12:05:00Z' tier1_completed_at: type: - string - 'null' format: date-time tier2_completed_at: type: - string - 'null' format: date-time RemediationRequestWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/RemediationRequest' RemediationStatus: type: string description: Customer-facing status of a remediation request. enum: - pending - in_progress - completed - failed - cancelled example: in_progress RememberRequest: properties: text: type: string minLength: 1 title: Text type: object required: - text title: RememberRequest RememberResponse: properties: data: $ref: '#/components/schemas/AcceptedMemory' type: object required: - data title: RememberResponse RenderEmailTemplateRequest: type: object properties: template_variables: type: object default: {} additionalProperties: true description: Variables for Liquid template rendering. Non-object values are silently treated as an empty object. RenderErrorObject: type: object properties: code: type: string enum: - render_error message: type: string required: - code - message RenderErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/RenderErrorObject' required: - errors RenderedEmailTemplate: allOf: - $ref: '#/components/schemas/EmailTemplateCommon' - type: object description: Template object with `subject`, `html_body`, and `text_body` replaced by their Liquid-rendered values. Rendered content is not limited by the stored template-field lengths. All other template fields remain unchanged. properties: subject: type: string nullable: true required: - subject RenderedEmailTemplateResponse: type: object properties: data: $ref: '#/components/schemas/RenderedEmailTemplate' required: - data ReplaceInboxFiltersRequest: type: object description: 'The complete filter configuration. An omitted list is replaced with an empty list. Unknown keys are ignored by the controller. ' properties: allowlist: $ref: '#/components/schemas/InboxFilterEntryList' blocklist: $ref: '#/components/schemas/InboxFilterEntryList' ReplaceSourcesRequest: type: object required: - sources properties: sources: type: array items: $ref: '#/components/schemas/SourceRequest' ReplacedLinkClick: type: object properties: record_type: type: string example: link_clicked description: Identifies the type of the resource. url: type: string example: link_clicked description: The original link that was sent in the message. to: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address message_id: type: string format: uuid description: The message ID associated with the clicked link. time_clicked: type: string format: date-time description: ISO 8601 formatted date indicating when the message request was received. example: record_type: link_clicked url: https://telnyx.com to: '18445550001' message_id: 7ee4241c-f127-47e5-9c34-3aac291f8058 time_clicked: '2019-04-01T14:45:45.450Z' ReplacedLinkClickEvent: type: object properties: data: $ref: '#/components/schemas/ReplacedLinkClick' ReplyEmailInboxMessageRequest: type: object description: At least one of `text` or `html` must contain a non-whitespace body. Recipients are derived from the source message; caller-supplied `to`, `cc`, or `bcc` values are ignored. properties: text: type: string minLength: 1 pattern: \S description: Plain-text reply body. html: type: string minLength: 1 pattern: \S description: HTML reply body. anyOf: - required: - text - required: - html ReputationCheckFrequency: type: string enum: - business_daily - daily - weekly - biweekly - monthly - never description: How often Telnyx refreshes the stored reputation data for this enterprise's registered numbers. ReputationData: type: object description: Reputation snapshot for a phone number. Each metric is a 0–100 score; `spam_risk` is a coarse bucket. Field set may grow over time - read by key. properties: spam_risk: type: - string - 'null' enum: - low - medium - high - null description: Overall spam-risk classification. example: low spam_category: type: - string - 'null' description: Category label from the reputation feed when the number is flagged. example: null maturity_score: type: - integer - 'null' minimum: 0 maximum: 100 example: 72 connection_score: type: - integer - 'null' minimum: 0 maximum: 100 example: 80 engagement_score: type: - integer - 'null' minimum: 0 maximum: 100 example: 64 sentiment_score: type: - integer - 'null' minimum: 0 maximum: 100 example: 75 last_refreshed_at: type: - string - 'null' format: date-time example: '2026-04-26T18:09:24.785211Z' ReputationLoaStatusPublic: type: string enum: - pending - approved - rejected description: Customer-facing Letter-of-Authorization verification state. `approved` is required (alongside reputation status) before phone numbers can be added. example: pending ReputationNumberOwnership: type: object properties: phone_number: type: string example: '+19493253498' source: $ref: '#/components/schemas/ReputationNumberSource' ownership_status: $ref: '#/components/schemas/ReputationOwnershipStatus' flag_reason: type: - string - 'null' example: null confirm_by: type: - string - 'null' format: date-time example: null last_checked_at: type: - string - 'null' format: date-time description: When ownership of the number was last checked. example: '2026-10-05T06:00:41Z' baseline_carrier: type: - string - 'null' description: Service provider ID (SPID) of the carrier that held the number when its ownership was last established. example: 114J baseline_recorded_at: type: - string - 'null' format: date-time example: '2026-09-20T15:22:09Z' history: type: array items: $ref: '#/components/schemas/ReputationNumberOwnershipEvent' description: Ownership events, most recent first. ReputationNumberOwnershipEvent: type: object properties: event_type: type: string description: '`added`, `check`, `flag`, `confirm` or `removed`.' example: check outcome: type: - string - 'null' description: What the event found or did, for example `unchanged` or `carrier_changed`. example: unchanged occurred_at: type: string format: date-time example: '2026-10-05T06:00:41Z' ReputationNumberOwnershipWrapped: type: object properties: data: $ref: '#/components/schemas/ReputationNumberOwnership' required: - data ReputationNumberSource: type: string enum: - telnyx - external description: 'Where the phone number is hosted. `telnyx`: in your Telnyx inventory. `external`: a number you own that is hosted with another provider.' example: external ReputationOwnershipStatus: type: string enum: - verified - flagged - pending_confirmation - removed description: 'Result of ongoing ownership checks. `verified`: the number is with the carrier on record. `pending_confirmation`: the number''s carrier changed, or a periodic ownership re-verification is due; confirm you still own it before `confirm_by`. `flagged`: a periodic re-verification went unanswered; the number stays monitored and is not removed, but confirm ownership (`POST .../ownership_confirm`) to return it to `verified`. `removed`: the number is no longer monitored; returned by `POST .../ownership_confirm` with `still_own: false`, and when listing numbers with `filter[ownership_status]=removed`.' example: verified ReputationPhoneNumber: type: object properties: id: type: string format: uuid example: 8a4b1f5e-2f12-4c0c-9a98-9b3a7d8b8e62 readOnly: true enterprise_id: type: string format: uuid example: 4a6192a4-573d-446d-b3ce-aff9117272a6 phone_number: type: string description: E.164 with leading `+`. example: '+19493253498' source: $ref: '#/components/schemas/ReputationNumberSource' ownership_status: $ref: '#/components/schemas/ReputationOwnershipStatus' flag_reason: type: - string - 'null' description: Why the number's ownership was flagged. `carrier_changed` when an ownership check found the number with a different carrier. example: carrier_changed confirm_by: type: - string - 'null' format: date-time description: Deadline to confirm you still own the number. Set only while `ownership_status` is `pending_confirmation`. example: '2026-10-08T07:00:00Z' removed_at: type: - string - 'null' format: date-time description: When the number was removed. Set only for removed numbers. example: '2026-10-09T06:02:11Z' removal_reason: anyOf: - $ref: '#/components/schemas/ReputationRemovalReason' - type: 'null' description: Why the number was removed. Set only for removed numbers. reputation_data: anyOf: - $ref: '#/components/schemas/ReputationData' - type: 'null' description: '`null` until the first refresh has been collected for this number.' created_at: type: string format: date-time example: '2026-04-26T18:06:51.940749Z' readOnly: true updated_at: type: string format: date-time example: '2026-04-26T18:09:24.785211Z' readOnly: true ReputationPhoneNumberCreate: type: object required: - phone_numbers additionalProperties: false properties: phone_numbers: type: array items: type: string example: '+19493253498' minItems: 1 maxItems: 100 description: 1–100 phone numbers in E.164 format with a leading `+`. ReputationPhoneNumberList: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/ReputationPhoneNumber' meta: $ref: '#/components/schemas/number-reputation_PaginationMeta' ReputationPhoneNumberListWithReputation: description: List of reputation-monitored phone numbers, each carrying its current reputation data. allOf: - $ref: '#/components/schemas/ReputationPhoneNumberList' ReputationPhoneNumberWithReputation: type: object required: - data properties: data: $ref: '#/components/schemas/ReputationPhoneNumber' ReputationRemovalReason: type: string enum: - ported_away - unconfirmed_ownership - reassigned - customer_reported - customer_removed description: 'Why a number was removed. `ported_away`: you confirmed the number left your control after a carrier change. `unconfirmed_ownership`: a carrier change was not confirmed before the deadline. `reassigned`: the number was reported as permanently disconnected. `customer_reported`: you reported that you no longer own the number. `customer_removed`: you removed the number.' example: unconfirmed_ownership ReputationStatus: type: string enum: - pending - approved - deleted - rejected description: Lifecycle status of the enterprise's Phone Number Reputation activation. ReputationSuspendedError: type: object description: Non-standard error envelope returned when the sending domain's reputation band is 'poor'. Uses string code `reputation_suspended` instead of a numeric code. required: - errors properties: errors: type: array minItems: 1 maxItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - reputation_suspended title: type: string example: Sending Suspended detail: type: string RequestMetadata: type: object description: 'Customer request tags from the x-ltg-metadata header: up to 5 entries. Keys are case-sensitive; keys starting with ltg_, telnyx_, litellm_ or cf_ (any case) are reserved. Values are strings (1-256 characters, no control or format characters), integers within +/-9007199254740991, or booleans; floats, null, objects and arrays are rejected. Values that look like credentials are rejected. Tags are attribution only: never forwarded upstream, never part of the response cache key, never used for budgets or routing. An untagged request reports {}.' maxProperties: 5 propertyNames: pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$ additionalProperties: anyOf: - type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f-\u009f]+$ - type: integer minimum: -9007199254740991 maximum: 9007199254740991 - type: boolean RequiredInboxActionRecipientInput: description: One recipient or a non-empty recipient array. Each recipient may be an email string or an object with `email` and optional `name`. oneOf: - $ref: '#/components/schemas/InboxActionEmailAddressInput' - type: array minItems: 1 items: $ref: '#/components/schemas/InboxActionEmailAddressInput' RequirementGroup: type: object properties: id: type: string country_code: type: string phone_number_type: type: string status: type: string enum: - approved - unapproved - pending-approval - declined - expired action: type: string customer_reference: type: string created_at: type: string format: date-time updated_at: type: string format: date-time record_type: type: string example: requirement_group regulatory_requirements: type: array items: $ref: '#/components/schemas/UserRequirement' RescheduleEmailMessageRequest: type: object description: Only the delivery time is mutable; any other request fields are ignored. properties: scheduled_at: type: string format: date-time description: New ISO 8601 delivery time. Must be strictly in the future. required: - scheduled_at ResearchCitation: type: object required: - url - title properties: url: type: string format: uri description: Source URL. title: type: string description: Title of the source page. snippet: type: string description: Relevant excerpt from the source (if available). ResearchRequest: type: object required: - query properties: query: type: string minLength: 1 maxLength: 2000 description: The research question or topic. example: Compare the performance of RAG vs fine-tuning for domain-specific QA research_effort: type: string enum: - lite - standard - deep description: Research depth level. `lite` is fastest, `deep` is most thorough. example: standard max_sources: type: integer minimum: 1 maximum: 50 description: Maximum number of sources to use. example: 20 background: type: boolean description: When `true`, the research runs asynchronously. The response returns a `task_id` immediately instead of waiting for the result. Poll `GET /web_search/research/{task_id}` to check status. example: false ResearchResponseAsync: type: object description: Asynchronous research response (when `background` is true). required: - task_id - status properties: task_id: type: string description: Unique identifier for the research task. Use this to poll the status. example: bf3026a5-dd57-44dd-b922-200041be3a4b status: type: string enum: - pending - running - completed - failed description: Current status of the research task. example: pending ResearchResponseSync: type: object description: Synchronous research response (when `background` is false or unset). required: - answer properties: answer: type: string description: The synthesized research answer. example: RAG and fine-tuning serve different purposes... citations: type: array items: $ref: '#/components/schemas/ResearchCitation' description: Sources cited in the answer. ResearchTaskStatus: type: object required: - task_id - status properties: task_id: type: string description: The research task identifier. status: type: string enum: - pending - running - completed - failed description: Current status of the research task. answer: type: string description: The synthesized research answer (present when status is `completed`). citations: type: array items: $ref: '#/components/schemas/ResearchCitation' description: Sources cited in the answer (present when status is `completed`). error: type: - string - 'null' description: Always present in poll responses; `null` unless the task failed. ResembleProviderParams: type: object description: Resemble AI provider-specific parameters. properties: api_key: type: string description: Custom Resemble API key. precision: type: string description: Synthesis precision. sample_rate: type: string description: Audio sample rate. format: type: string description: Audio output format. ResembleSampleRate: type: string title: Resemble Sample Rate description: Audio sample rate in Hz. enum: - '8000' - '16000' - '22050' - '32000' - '44100' - '48000' default: '48000' ResembleVoiceSettings: type: object title: Resemble Voice Settings properties: type: type: string enum: - resemble description: Voice settings provider type precision: description: Audio precision format. type: string enum: - PCM_16 - PCM_24 - PCM_32 - MULAW default: PCM_32 sample_rate: $ref: '#/components/schemas/ResembleSampleRate' format: description: Output audio format. type: string enum: - wav - mp3 default: mp3 required: - type ResendMagicLinkRequest: type: object properties: email: type: string format: email description: Email address of the bot signup account to resend the magic link to. example: agent-owner@example.com required: - email ReservedPhoneNumber: properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true errors: type: string description: Errors the reservation could happen upon example: Number is already on hold readOnly: true record_type: type: string example: reserved_phone_number readOnly: true phone_number: type: string example: '+19705555098' status: type: string enum: - pending - success - failure description: The status of the phone number's reservation. example: success readOnly: true created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the individual number reservation was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the the individual number reservation was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true expired_at: type: string format: date-time description: An ISO 8901 datetime string for when the individual number reservation is going to expire example: '2018-01-01T00:00:00.000000Z' readOnly: true example: id: 12ade33a-21c0-473b-b055-b3c836e1c292 record_type: reserved_phone_number phone_number: '+19705555098' status: pending created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' expired_at: '2018-01-01T00:00:00.000000Z' type: object ResourceMetadata: type: object properties: resource: type: string format: uri description: Protected resource URL authorization_servers: type: array items: type: string format: uri description: List of authorization server URLs ResourceNotFoundError: type: object properties: errors: type: array items: type: object properties: code: type: string description: Error code identifying the error type. detail: type: string description: A human-readable explanation of the error. meta: type: object properties: url: type: string format: uri description: A URL to the detailed documentation for the error. title: type: string description: A short, human-readable summary of the problem. ResponseFormatJsonObject: description: 'JSON mode: the model output is valid JSON, without a schema.' properties: type: const: json_object type: string required: - type title: ResponseFormatJsonObject type: object ResponseFormatJsonSchema: description: The JSON schema configuration, required when `type` is `json_schema`. Matches the [OpenAI structured outputs](https://platform.openai.com/docs/guides/structured-outputs) `json_schema` response format. properties: name: type: string description: The name of the response format. Used for clarity only. description: type: string description: A description of what the response format is for, typically used to guide the model. schema: type: object additionalProperties: true description: The JSON schema the model output must conform to. A valid [JSON Schema](https://json-schema.org) object, e.g. a Pydantic `model_json_schema()` export. strict: type: boolean description: Enables strict schema adherence when supported by the model. If the generated output does not match the provided schema, the request fails instead of returning non-conformant output. type: object required: - name title: ResponseFormatJsonSchema ResponseFormatJsonSchemaParam: description: 'Structured output: the model output is constrained to the JSON schema supplied in `json_schema`.' properties: type: const: json_schema type: string json_schema: $ref: '#/components/schemas/ResponseFormatJsonSchema' required: - type - json_schema title: ResponseFormatJsonSchemaParam type: object ResponseFormatText: description: Plain text output. properties: type: const: text type: string required: - type title: ResponseFormatText type: object ResponseMeta: type: object required: - event_count - products properties: event_count: type: integer description: Total number of events in the session tree. products: type: array items: type: string description: List of distinct products involved in the session. ResumeConferenceRecordingRequest: type: object title: Pause Recording Request properties: command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: description: Use this field to resume specific recording. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 region: $ref: '#/components/schemas/ConferenceRegion' ResumeRecordingRequest: type: object title: Resume Recording Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: description: Uniquely identifies the resource. type: string format: uuid example: 6e00ab49-9487-4364-8ad6-23965965afb2 Retrieval: properties: type: type: string enum: - retrieval retrieval: $ref: '#/components/schemas/BucketIds' type: object required: - type - retrieval title: Retrieval RetrievalSettings: type: object description: How documents are retrieved when searching the collection. properties: top_k: type: integer description: Number of top results to retrieve (1–50). minimum: 1 maximum: 50 default: 5 example: 5 retrieval_type: type: string description: 'Retrieval strategy. `vector` runs semantic similarity search; `hybrid` combines vector similarity with keyword matching; `keyword` runs lexical (BM25) matching. `keyword` is not accepted yet: setting it returns 422 `unsupported_retrieval_type`. A collection set to `hybrid` is accepted here but cannot be searched until hybrid execution ships.' enum: - vector - hybrid default: vector example: vector RetrievalSettingsWrapper: type: object properties: record_type: type: string description: Identifies the record type. Always `ai_collection_settings`. example: ai_collection_settings readOnly: true retrieval: $ref: '#/components/schemas/RetrievalSettings' RetrievalTool: properties: type: type: string enum: - retrieval shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true retrieval: $ref: '#/components/schemas/BucketIds' type: object required: - type - retrieval title: RetrievalTool RetrieveVerificationResponse: title: RetrieveVerificationResponse required: - data type: object properties: data: $ref: '#/components/schemas/Verification' Revision: type: object properties: record_type: type: string revision_id: type: string image: type: string commit_sha: type: string shipped_by: type: string shipped_at: type: string format: date-time build_status: type: string deploy_status: type: string active: type: boolean failure_stage: type: string failure_reason: type: string build_ok_at: type: string format: date-time RevisionListResponse: type: object properties: meta: $ref: '#/components/schemas/functions-observability_PaginationMeta' data: type: array items: $ref: '#/components/schemas/Revision' RolloutSlot: properties: version_id: type: string title: Version Id weight: type: number title: Weight minimum: 0.0 maximum: 100.0 type: object required: - version_id - weight title: RolloutSlot description: One slot in a percentage rollout. Room: type: object properties: id: description: A unique identifier for the room. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 max_participants: description: Maximum participants allowed in the room. type: integer example: 50 unique_name: description: The unique (within the Telnyx account scope) name of the room. type: string example: My room created_at: description: ISO 8601 timestamp when the room was created. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' updated_at: description: ISO 8601 timestamp when the room was updated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' active_session_id: description: The identifier of the active room session if any. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 sessions: type: array items: $ref: '#/components/schemas/RoomSession' enable_recording: description: Enable or disable recording for that room. type: boolean example: true default: false webhook_event_url: type: string format: uri description: The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: string format: uri description: The failover URL where webhooks related to this room will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_timeout_secs: type: integer minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null record_type: type: string example: room readOnly: true example: id: 7b61621f-62e0-4aad-ab11-9fd19e272e73 max_participants: 50 unique_name: My Room created_at: '2021-04-16T09:46:20.954863Z' updated_at: '2021-04-16T10:24:55.962200Z' active_session_id: 7b61621f-62e0-4aad-ab11-9fd19e272e74 enable_recording: true webhook_event_failover_url: https://failover.example.com webhook_timeout_secs: 25 webhook_event_url: https://www.example.com sessions: - id: 7b61621f-62e0-4aad-ab11-9fd19e272e74 room_id: 7b61621f-62e0-4aad-ab11-9fd19e272e73 active: true created_at: '2021-04-16T09:46:20.954863Z' updated_at: '2021-04-16T10:24:55.962200Z' participants: [] record_type: room_session record_type: room RoomComposition: type: object properties: id: description: A unique identifier for the room composition. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 room_id: description: Identify the room associated with the room composition. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 session_id: description: Identify the room session associated with the room composition. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 user_id: description: Identify the user associated with the room composition. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 status: description: Shows the room composition status. type: string example: completed enum: - completed - enqueued - processing size_mb: description: Shows the room composition size in MB. type: number format: float example: 10.5 download_url: description: Url to download the composition. type: string example: https://www.example.com duration_secs: description: Shows the room composition duration in seconds. type: integer example: 67 format: description: Shows format of the room composition. type: string example: mp4 enum: - mp4 created_at: description: ISO 8601 timestamp when the room composition was created. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' updated_at: description: ISO 8601 timestamp when the room composition was updated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' ended_at: description: ISO 8601 timestamp when the room composition has ended. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' started_at: description: ISO 8601 timestamp when the room composition has stated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' completed_at: description: ISO 8601 timestamp when the room composition has completed. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' video_layout: description: Describes the video layout of the room composition in terms of regions. Limited to 2 regions. type: object additionalProperties: $ref: '#/components/schemas/VideoRegion' webhook_event_url: description: The URL where webhooks related to this room composition will be sent. Must include a scheme, such as 'https'. type: string format: uri example: https://example.com webhook_event_failover_url: type: string format: uri description: The failover URL where webhooks related to this room composition will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_timeout_secs: type: integer minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null resolution: type: string description: The resolution of the room composition. example: 1280x720 record_type: type: string example: room_composition readOnly: true example: completed_at: '2022-02-25T05:39:56.377426Z' download_url: https://example.com duration_secs: 84 ended_at: '2022-02-24T23:22:24.577677Z' format: mp4 id: 7103dc53-ee59-4b54-a58b-c77d99ceb037 record_type: composition resolution: 1280x720 room_id: f981dbb3-228a-44e9-ac54-e87f0e2658b0 session_id: 8f728d7b-00e2-4c59-8c27-f564b828df87 size_mb: 6 started_at: '2022-02-24T23:21:00.077209Z' status: enqueued user_id: 12a04ec9-0f91-4a91-9f3a-a19d9931182e video_layout: first: height: 720 video_sources: - 7b61621f-62e0-4aad-ab11-9fd19e272e73 width: 1280 x_pos: 0 y_pos: 0 z_pos: 0 webhook_event_url: https://webhook.site/544663ce-b692-4f9c-80ed-e5ad97cd5c02 RoomParticipant: type: object properties: id: description: A unique identifier for the room participant. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 session_id: description: Identify the room session that participant is part of. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 context: description: Context provided to the given participant through the client SDK type: string example: Alice joined_at: description: ISO 8601 timestamp when the participant joined the session. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' updated_at: description: ISO 8601 timestamp when the participant was updated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' left_at: description: ISO 8601 timestamp when the participant left the session. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' record_type: type: string example: room_participant readOnly: true example: id: 7b61621f-62e0-4aad-ab11-9fd19e272e73 session_id: 7b61621f-5fe4-4aad-ab11-9fd19e272e73 context: Alice joined_at: '2021-04-16T09:46:20.954863Z' updated_at: '2021-04-16T10:24:55.962200Z' left_at: '2021-04-16T10:24:55.962200Z' record_type: room_participant RoomRecording: type: object properties: id: description: A unique identifier for the room recording. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 room_id: description: Identify the room associated with the room recording. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 session_id: description: Identify the room session associated with the room recording. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 participant_id: description: Identify the room participant associated with the room recording. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 status: description: Shows the room recording status. type: string example: completed enum: - completed - processing type: description: Shows the room recording type. type: string example: audio enum: - audio - video size_mb: description: Shows the room recording size in MB. type: number format: float example: 10.5 download_url: description: Url to download the recording. type: string example: https://www.example.com codec: description: Shows the codec used for the room recording. type: string example: opus duration_secs: description: Shows the room recording duration in seconds. type: integer example: 67 created_at: description: ISO 8601 timestamp when the room recording was created. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' updated_at: description: ISO 8601 timestamp when the room recording was updated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' ended_at: description: ISO 8601 timestamp when the room recording has ended. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' started_at: description: ISO 8601 timestamp when the room recording has stated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' completed_at: description: ISO 8601 timestamp when the room recording has completed. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' record_type: type: string example: room_recording readOnly: true example: id: 6b61621f-62e0-4aad-ab11-9fd19e272e73 room_id: 7b61621f-5fe4-4aad-ab11-9fd19e272e73 session_id: 8b61621f-5fe4-4aad-ab11-9fd19e272e73 participant_id: 9b61621f-5fe4-4aad-ab11-9fd19e272e73 status: completed download_url: https://www.example.com type: audio duration_secs: 3660 size_mb: 5.6 codec: opus created_at: '2021-04-16T09:46:20.954863Z' updated_at: '2021-04-16T10:24:55.962200Z' started_at: '2021-04-16T09:24:55.962200Z' ended_at: '2021-04-16T10:24:55.962200Z' completed_at: '2021-04-16T10:25:55.962200Z' record_type: room_session RoomSession: type: object properties: id: description: A unique identifier for the room session. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 room_id: description: Identify the room hosting that room session. type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0 active: description: Shows if the room session is active or not. type: boolean example: false created_at: description: ISO 8601 timestamp when the room session was created. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' updated_at: description: ISO 8601 timestamp when the room session was updated. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' ended_at: description: ISO 8601 timestamp when the room session has ended. type: string format: date-time example: '2021-03-26T17:51:59.588408Z' participants: type: array items: $ref: '#/components/schemas/RoomParticipant' record_type: type: string example: room_session readOnly: true example: id: 7b61621f-62e0-4aad-ab11-9fd19e272e73 room_id: 7b61621f-5fe4-4aad-ab11-9fd19e272e73 active: false created_at: '2021-04-16T09:46:20.954863Z' updated_at: '2021-04-16T10:24:55.962200Z' ended_at: '2021-04-16T10:24:55.962200Z' participants: [] record_type: room_session Rule-Input: properties: match: items: $ref: '#/components/schemas/Clause' type: array title: Match serve: $ref: '#/components/schemas/Serve' type: object required: - serve title: Rule description: 'A targeting rule: ``match`` clauses (AND) gate ``serve``. An empty ``match`` is a catch-all (always fires).' Rule-Output: properties: match: items: $ref: '#/components/schemas/Clause' type: array title: Match serve: $ref: '#/components/schemas/Serve' type: object required: - serve title: Rule description: 'A targeting rule: ``match`` clauses (AND) gate ``serve``. An empty ``match`` is a catch-all (always fires).' RunStatus: type: string enum: - pending - running - paused - succeeded - failed - cancelled title: RunStatus S3ConfigurationData: type: object title: AWS S3 Storage Configuration Data properties: backend: type: string enum: - s3 description: Storage backend type bucket: $ref: '#/components/schemas/Bucket' region: $ref: '#/components/schemas/Region' aws_access_key_id: $ref: '#/components/schemas/AwsAccessKeyId' aws_secret_access_key: $ref: '#/components/schemas/AwsSecretAccessKey' required: - backend - bucket - region - aws_access_key_id - aws_secret_access_key S3GenericConfigurationData: type: object title: S3-Compatible (Generic) Storage Configuration Data properties: backend: type: string enum: - s3-generic description: Storage backend type bucket: $ref: '#/components/schemas/Bucket' region: $ref: '#/components/schemas/Region' endpoint: $ref: '#/components/schemas/Endpoint' aws_access_key_id: $ref: '#/components/schemas/AwsAccessKeyId' aws_secret_access_key: $ref: '#/components/schemas/AwsSecretAccessKey' required: - backend - bucket - region - endpoint - aws_access_key_id - aws_secret_access_key SIMCard: type: object title: SIMCard properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string example: sim_card readOnly: true status: $ref: '#/components/schemas/SIMCardStatus' type: type: string description: The type of SIM card readOnly: true example: physical enum: - physical - esim iccid: type: string description: 'The ICCID is the identifier of the specific SIM card/chip. Each SIM is internationally identified by its integrated circuit card identifier (ICCID). ICCIDs are stored in the SIM card''s memory and are also engraved or printed on the SIM card body during a process called personalization. ' readOnly: true example: '89310410106543789301' imsi: type: string description: 'SIM cards are identified on their individual network operators by a unique International Mobile Subscriber Identity (IMSI).
Mobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs. The IMSI is stored in the Subscriber Identity Module (SIM) inside the device and is sent by the device to the appropriate network. It is used to acquire the details of the device in the Home Location Register (HLR) or the Visitor Location Register (VLR). ' readOnly: true example: 081932214823362973 msisdn: type: string description: 'Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.
MSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which identifies the subscriber''s operator. ' readOnly: true example: '+13109976224' sim_card_group_id: type: string format: uuid description: The group SIMCardGroup identification. This attribute can be null when it's present in an associated resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 tags: type: array description: Searchable tags associated with the SIM card items: type: string example: - personal - customers - active-customers authorized_imeis: type: - array - 'null' description: List of IMEIs authorized to use a given SIM card. items: type: string example: - '106516771852751' - '534051870479563' - '508821468377961' current_imei: type: string description: IMEI of the device where a given SIM card is currently being used. readOnly: true example: '457032284023794' data_limit: type: object description: The SIM card individual data limit configuration. properties: amount: type: string example: '2048.1' unit: type: string example: MB enum: - MB - GB current_billing_period_consumed_data: type: object description: The SIM card consumption so far in the current billing cycle. readOnly: true properties: amount: type: string example: '2049.0' unit: type: string example: MB default: MB actions_in_progress: type: boolean description: Indicate whether the SIM card has any pending (in-progress) actions. readOnly: true example: true default: false created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' ipv4: type: string description: 'The SIM''s address in the currently connected network. This IPv4 address is usually obtained dynamically, so it may vary according to the location or new connections. ' readOnly: true example: 192.168.0.0 ipv6: type: string description: 'The SIM''s address in the currently connected network. This IPv6 address is usually obtained dynamically, so it may vary according to the location or new connections. ' readOnly: true example: 2001:cdba:0000:0000:0000:0000:3257:9652 current_device_location: type: object description: Current physical location data of a given SIM card. Accuracy is given in meters. readOnly: true properties: latitude: type: string example: '41.143' longitude: type: string example: '-8.605' accuracy: type: integer example: 1250 accuracy_unit: type: string example: m default: m current_mnc: type: string readOnly: true description: "Mobile Network Code of the current network to which the SIM card is connected. It's a two to three\ \ decimal digits that identify a network.

\n This code is commonly seen joined with a Mobile Country\ \ Code (MCC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code." example: '260' current_mcc: type: string readOnly: true description: 'Mobile Country Code of the current network to which the SIM card is connected. It''s a three decimal digit that identifies a country.

This code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code.' example: '410' live_data_session: type: string enum: - connected - disconnected - unknown readOnly: true description: Indicates whether the device is actively connected to a network and able to run data. example: connected pin_puk_codes: type: object description: PIN and PUK codes for the SIM card. Only available when include_pin_puk_codes=true is set in the request. readOnly: true properties: pin1: type: string description: The primary Personal Identification Number (PIN) for the SIM card. This is a 4-digit code used to protect the SIM card from unauthorized use. example: '1234' readOnly: true pin2: type: string description: The secondary Personal Identification Number (PIN2) for the SIM card. This is a 4-digit code used for additional security features. example: '5678' readOnly: true puk1: type: string description: The primary Personal Unblocking Key (PUK1) for the SIM card. This is an 8-digit code used to unlock the SIM card if PIN1 is entered incorrectly multiple times. example: '12345678' readOnly: true puk2: type: string description: The secondary Personal Unblocking Key (PUK2) for the SIM card. This is an 8-digit code used to unlock the SIM card if PIN2 is entered incorrectly multiple times. example: '87654321' readOnly: true esim_installation_status: type: - string - 'null' description: The installation status of the eSIM. Only applicable for eSIM cards. readOnly: true example: released enum: - released - disabled version: type: string description: The version of the SIM card. readOnly: true example: '4.3' resources_with_in_progress_actions: type: array description: List of resources with actions in progress. readOnly: true items: type: object example: [] eid: type: - string - 'null' description: The Embedded Identity Document (eID) for eSIM cards. readOnly: true example: null voice_enabled: type: boolean description: Indicates whether voice services are enabled for the SIM card. readOnly: true example: false default: false SIMCardAction: type: object title: SIMCardAction description: This object represents a SIM card action. It allows tracking the current status of an operation that impacts the SIM card. properties: id: $ref: '#/components/schemas/wireless_Id' record_type: type: string example: sim_card_action readOnly: true sim_card_id: type: string format: uuid description: The related SIM card identifier. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 action_type: type: string description: "The operation type. It can be one of the following:
\n
    \n
  • enable - move the\ \ SIM card to the enabled status
  • \n
  • enable_standby_sim_card - move a SIM card\ \ previously on the standby status to the enabled status after it consumes data.
  • \n\ \
  • disable - move the SIM card to the disabled status
  • \n
  • set_standby\ \ - move the SIM card to the standby status
  • \n
" enum: - enable - enable_standby_sim_card - disable - set_standby readOnly: true example: enable status: type: object properties: value: type: string description: The current status of the SIM card action. enum: - in-progress - completed - failed - interrupted readOnly: true example: completed reason: type: string description: It describes why the SIM card action is in the current status. This will be null for self-explanatory statuses, such as in-progress and completed but will include further information on statuses like interrupted and failed. readOnly: true example: The data limit was exceeded. settings: type: - object - 'null' description: A JSON object representation of the action params. example: {} readOnly: true additionalProperties: true created_at: $ref: '#/components/schemas/wireless_CreatedAt' updated_at: $ref: '#/components/schemas/wireless_UpdatedAt' SIMCardActionsSummary: type: object properties: status: type: string enum: - in-progress - completed - failed - interrupted example: in-progress count: type: integer SIMCardActivationCode: type: object title: SIMCardActivationCode properties: record_type: type: string example: sim_card_activation_code readOnly: true activation_code: type: string description: Contents of the eSIM activation QR code. example: LPA:1$.... readOnly: true SIMCardDeviceDetails: type: object title: SIMCardDeviceDetails properties: record_type: type: string example: device_details readOnly: true imei: type: string description: IMEI of the device where the SIM card is being used in. example: '457032284023794' readOnly: true model_name: type: string description: Brand of the device where the SIM card is being used in. example: iPad Pro 11 2020 Cellular readOnly: true brand_name: type: string description: Brand of the device where the SIM card is being used in. example: Apple readOnly: true device_type: type: string description: Type of the device where the SIM card is being used in. example: Tablet readOnly: true operating_system: type: string description: Operating system of the device where the SIM card is being used in. example: iOS 12 readOnly: true SIMCardGroup: title: SIMCardGroup type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string description: Identifies the type of the resource. readOnly: true example: sim_card_group default: description: Indicates whether the SIM card group is the users default group.
The default group is created for the user and can not be removed. type: boolean example: true readOnly: true name: description: A user friendly name for the SIM card group. type: string example: My Test Group data_limit: type: object description: Upper limit on the amount of data the SIM cards, within the group, can use. properties: amount: type: string example: '2048.1' unit: type: string example: MB consumed_data: $ref: '#/components/schemas/ConsumedData' private_wireless_gateway_id: description: The identification of the related Private Wireless Gateway resource. format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 default: null wireless_blocklist_id: description: The identification of the related Wireless Blocklist resource. format: uuid type: string example: a13bc415-7966-43bf-90d4-63cc76275289 default: null created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' SIMCardGroupAction: type: object title: SIMCardGroupAction description: This object represents a SIM card group action request. It allows tracking the current status of an operation that impacts the SIM card group and SIM card in it. properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string example: sim_card_group_action readOnly: true sim_card_group_id: type: string format: uuid description: The SIM card group identification. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 type: type: string description: Represents the type of the operation requested. enum: - set_private_wireless_gateway - remove_private_wireless_gateway - set_wireless_blocklist - remove_wireless_blocklist example: set_private_wireless_gateway status: type: string enum: - in-progress - completed - failed example: in-progress settings: type: object description: A JSON object representation of the action params. properties: private_wireless_gateway_id: description: The identification of the related Private Wireless Gateway resource. format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 wireless_blocklist_id: description: The identification of the related Wireless Blocklist resource. format: uuid type: string example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' SIMCardGroupCreate: title: SIMCardGroupCreate type: object properties: name: description: A user friendly name for the SIM card group. type: string example: My Test Group data_limit: type: object description: Upper limit on the amount of data the SIM cards, within the group, can use. properties: amount: type: string example: '2048.1' unit: type: string example: MB required: - name SIMCardGroupPatch: title: SIMCardGroupPatch type: object properties: name: description: A user friendly name for the SIM card group. type: string example: My Test Group data_limit: type: object description: Upper limit on the amount of data the SIM cards, within the group, can use. properties: amount: type: string example: '2048.1' unit: type: string example: MB SIMCardOrder: title: SIMCardOrder type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string description: Identifies the type of the resource. readOnly: true example: sim_card_order quantity: type: integer minimum: 1 description: The amount of SIM cards requested in the SIM card order. example: 21 cost: type: object description: An object representing the total cost of the order. properties: amount: type: string description: A string representing the cost amount. example: '2.32' currency: type: string description: Filter by ISO 4217 currency string. example: USD example: amount: '2.52' currency: USD order_address: type: object properties: id: type: string description: Uniquely identifies the address for the order. example: '1293384261075731499' first_name: type: string description: The first name of the shipping recipient. example: John last_name: type: string description: The last name of the shipping recipient. example: Smith business_name: type: string description: The name of the business where the address is located. example: Telnyx LLC street_address: type: string description: The name of the street where the address is located. example: 600 Congress Avenue extended_address: type: string description: Supplemental field for address information. example: 14th Floor locality: type: string description: The name of the city where the address is located. example: Austin administrative_area: type: string description: State or province where the address is located. example: TX country_code: type: string description: The mobile operator two-character (ISO 3166-1 alpha-2) origin country code. example: US postal_code: type: string description: Postal code for the address. example: '78701' description: An object representing the address information from when the order was submitted. readOnly: true example: id: '1293384261075731499' street_address: 600 Congress Avenue extended_address: 14th Floor locality: Austin administrative_area: TX country_code: US postal_code: '78701' tracking_url: type: string format: uri description: The URL used to get tracking information about the order. example: http://www.example.com/ status: type: string description: The current status of the SIM Card order.
  • pending - the order is waiting to be processed.
  • processing - the order is currently being processed.
  • ready_to_ship - the order is ready to be shipped to the specified address.
  • shipped - the order was shipped and is on its way to be delivered to the specified address.
  • delivered - the order was delivered to the specified address.
  • canceled - the order was canceled.
enum: - pending - processing - ready_to_ship - shipped - delivered - canceled example: pending created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was last created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was last updated. readOnly: true example: '2018-02-02T22:25:27.521Z' SIMCardOrderPreview: title: SIMCardOrderPreview type: object properties: total_cost: type: object properties: amount: type: string description: A string representing the cost amount. example: '2.32' currency: type: string description: ISO 4217 currency string. example: USD shipping_cost: type: object properties: amount: type: string description: A string representing the cost amount. example: '2.32' currency: type: string description: ISO 4217 currency string. example: USD sim_cards_cost: type: object properties: amount: type: string description: A string representing the cost amount. example: '2.32' currency: type: string description: ISO 4217 currency string. example: USD record_type: type: string description: Identifies the type of the resource. example: sim_card_order_preview readOnly: true quantity: type: integer description: The amount of SIM cards requested in the SIM card order. example: 21 SIMCardPublicIP: type: object title: SIMCardPublicIP properties: record_type: type: string example: sim_card_public_ip readOnly: true region_code: type: string example: dc2 readOnly: true sim_card_id: type: string format: uuid example: 6b14e151-8493-4fa1-8664-1cc4e6d14158 type: type: string enum: - ipv4 default: ipv4 example: ipv4 readOnly: true ip: type: string description: The provisioned IP address. This attribute will only be available when underlying resource status is in a "provisioned" status. example: 192.168.0.0 readOnly: true default: null created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' SIMCardRegistration: title: SIMCardRegistration type: object properties: sim_card_group_id: type: string format: uuid description: The group SIMCardGroup identification. This attribute can be null when it's present in an associated resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 tags: type: array description: Searchable tags associated with the SIM card items: type: string example: - personal - customers - active-customers registration_codes: type: array items: type: string example: - '0000000001' - '0000000002' - '0000000003' status: type: string description: Status on which the SIM card will be set after being successful registered. enum: - enabled - disabled - standby example: standby default: enabled required: - registration_codes SIMCardRegistrationCodeValidation: type: object properties: record_type: type: string example: sim_card_registration_code_validation registration_code: type: string description: The 10-digit SIM card registration code example: 0123456789 valid: type: boolean description: The attribute that denotes whether the code is valid or not example: false invalid_detail: type: - string - 'null' description: The validation message example: This code has already been used. SIMCardRegistrationCodeValidations: type: object properties: data: type: array items: $ref: '#/components/schemas/SIMCardRegistrationCodeValidation' SIMCardStatus: type: object properties: value: type: string enum: - registering - enabling - enabled - disabling - disabled - data_limit_exceeded - setting_standby - standby description: "The current status of the SIM card. It will be one of the following:
\n
    \n
  • registering\ \ - the card is being registered
  • \n
  • enabling - the card is being enabled
  • \n
  • enabled\ \ - the card is enabled and ready for use
  • \n
  • disabling - the card is being disabled
  • \n\ \
  • disabled - the card has been disabled and cannot be used
  • \n
  • data_limit_exceeded\ \ - the card has exceeded its data consumption limit
  • \n
  • setting_standby - the process to\ \ set the card in stand by is in progress
  • \n
  • standby - the card is in stand by
  • \n
\n\ Transitioning between the enabled and disabled states may take a period of time.\n" readOnly: true example: enabled reason: type: string description: It describes why the SIM card is in the current status. readOnly: true example: The SIM card is active, ready to connect to networks and consume data. SIPReferTool: properties: type: type: string enum: - refer shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true refer: $ref: '#/components/schemas/SIPReferToolParams' type: object required: - type - refer title: SIPReferTool SIPReferToolParams: properties: targets: type: array description: The different possible targets of the SIP refer. The assistant will be able to choose one of the targets to refer the call to. items: type: object properties: name: type: string description: The name of the target. example: Support sip_address: type: string description: The SIP URI to which the call will be referred. example: sip:username@sip.non-telnyx-address.com sip_auth_username: type: string description: SIP Authentication username used for SIP challenges. sip_auth_password: type: string description: SIP Authentication password used for SIP challenges. required: - name - sip_address sip_headers: description: SIP headers to be added to the SIP REFER. Currently only User-to-User and Diversion headers are supported. type: array items: type: object properties: name: type: string enum: - User-to-User - Diversion value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string custom_headers: description: Custom headers to be added to the SIP REFER. type: array items: type: object properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string type: object required: - targets title: SIPReferToolParams SMSFallback: type: object properties: from: type: string description: Phone number in +E.164 format example: '+13125551234' text: type: string description: Text (maximum 3072 characters) example: Hello world! SSLCertificate: type: object properties: id: type: string description: Unique identifier for the SSL certificate issued_to: type: object properties: common_name: type: string description: The common name of the entity the certificate was issued to organization: type: string description: The organization the certificate was issued to organization_unit: type: string description: The organizational unit the certificate was issued to issued_by: type: object properties: common_name: type: string description: The common name of the entity the certificate was issued by organization: type: string description: The organization the certificate was issued by organization_unit: type: string description: The organizational unit the certificate was issued by valid_from: type: string format: date-time description: The time the certificate is valid from example: '2020-01-01T00:00:00Z' valid_to: type: string format: date-time description: The time the certificate is valid to example: '2020-01-01T00:00:00Z' created_at: type: string format: date-time description: Time when SSL certificate was uploaded example: '2020-01-01T00:00:00Z' STTProvider: type: object description: A (provider, model) tuple along with the service surfaces it supports. Each entry in `service_types` describes one surface and the languages accepted on it. properties: provider: type: string description: STT provider name. example: deepgram model: type: string description: Provider-scoped model name. example: deepgram/nova-3 hosted: type: boolean description: Whether this model runs on Telnyx-hosted infrastructure (`true`) or is provided by a third-party vendor (`false`). service_types: type: array description: Service surfaces this (provider, model) supports. When the request filters by `service_type`, only the matching nested entry is returned for each matching model. items: $ref: '#/components/schemas/STTProviderServiceType' required: - provider - model - hosted - service_types STTProviderServiceType: type: object description: A supported service surface for a given (provider, model), along with the language codes accepted on that surface. Language support can differ per surface — for example, a model may accept a narrower language set for streaming than for file transcription. properties: type: $ref: '#/components/schemas/STTServiceType' languages: type: array description: Languages accepted on this service surface, in the provider's native code format. `auto` indicates the provider performs language detection. items: type: string example: - en - es - fr required: - type - languages STTProvidersMeta: type: object properties: total: type: integer description: Total number of entries returned. example: 12 required: - total STTProvidersResponse: type: object description: List of supported STT providers and models. properties: data: type: array items: $ref: '#/components/schemas/STTProvider' meta: $ref: '#/components/schemas/STTProvidersMeta' required: - data - meta STTServiceType: type: string description: Service surface a model is available on. `ai_assistant` is the STT surface configured via Call Control voice-assistant transcription; it covers both live-streaming and non-streaming/batch models (matching the `TranscriptionConfig.model` enum on `call-control` voice assistants). enum: - streaming - file_based - in_call - ai_assistant ScheduledCallSettings: properties: sip_region: $ref: '#/components/schemas/SipRegion' type: object title: ScheduledCallSettings description: 'Per-call telephony overrides applied when a scheduled phone-call event dispatches. Phone-call events only. New per-call dispatch options should be added here rather than as top-level event fields.' ScheduledEventResponse: anyOf: - $ref: '#/components/schemas/ScheduledPhoneCallEventResponse' - $ref: '#/components/schemas/ScheduledSmsEventResponse' title: ScheduledEventResponse description: Union type for different scheduled event response types ScheduledPhoneCallEventResponse: properties: telnyx_conversation_channel: $ref: '#/components/schemas/ConversationChannelType' telnyx_end_user_target: type: string title: Telnyx End User Target telnyx_agent_target: type: string title: Telnyx Agent Target scheduled_at_fixed_datetime: type: string format: date-time title: Scheduled At Fixed Datetime assistant_id: type: string title: Assistant Id retry_count: type: integer title: Retry Count default: 0 retry_attempts: type: integer title: Retry Attempts scheduled_event_id: type: string title: Scheduled Event Id conversation_id: type: string title: Conversation Id created_at: type: string format: date-time title: Created At status: allOf: - $ref: '#/components/schemas/EventStatus' default: pending conversation_metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean type: object title: Conversation Metadata dynamic_variables: additionalProperties: type: string type: object description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax. title: Dynamic Variables errors: items: type: string type: array title: Errors call_status: title: Call Status type: string description: 'Values: busy, canceled, no-answer, ringing, completed, failed, in-progress' call_duration: title: Call Duration type: integer description: Duration of the call in seconds max_retries_client_errors: type: integer title: Max Retries Client Errors description: 'Configure number of retries on client errors: busy, no-answer, failed, canceled (caller hung up before the callee answered)' default: 0 retry_interval_secs: title: Retry Interval Secs type: integer call_attempts: title: Call Attempts items: $ref: '#/components/schemas/AssistantScheduledCallAttempt' type: array dispatched_at: title: Dispatched At type: string format: date-time description: Date time at which call was sent call_settings: $ref: '#/components/schemas/ScheduledCallSettings' type: object required: - telnyx_conversation_channel - telnyx_end_user_target - telnyx_agent_target - scheduled_at_fixed_datetime - assistant_id title: ScheduledPhoneCallEventResponse ScheduledSmsEventResponse: properties: telnyx_conversation_channel: $ref: '#/components/schemas/ConversationChannelType' telnyx_end_user_target: type: string title: Telnyx End User Target telnyx_agent_target: type: string title: Telnyx Agent Target scheduled_at_fixed_datetime: type: string format: date-time title: Scheduled At Fixed Datetime assistant_id: type: string title: Assistant Id retry_count: type: integer title: Retry Count default: 0 text: type: string title: Text scheduled_event_id: type: string title: Scheduled Event Id conversation_id: type: string title: Conversation Id created_at: type: string format: date-time title: Created At status: allOf: - $ref: '#/components/schemas/EventStatus' default: pending conversation_metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean type: object title: Conversation Metadata dynamic_variables: additionalProperties: type: string type: object description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax. title: Dynamic Variables errors: items: type: string type: array title: Errors type: object required: - telnyx_conversation_channel - telnyx_end_user_target - telnyx_agent_target - scheduled_at_fixed_datetime - assistant_id - text title: ScheduledSmsEventResponse 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 — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true send_message: type: object properties: message_template: type: - string - 'null' description: Optional message template with dynamic variable support using mustache syntax (e.g., {{variable_name}}). When set, the assistant will use this template for the SMS body instead of generating one. Dynamic variables like {{telnyx_end_user_target}}, {{telnyx_agent_target}}, and custom webhook-provided variables will be resolved at runtime. additionalProperties: true type: object required: - type - send_message title: SendMessageTool SendRecordingUrl: type: boolean description: Whether to send RecordingUrl in webhooks. example: false default: true SendSIPInfoRequest: type: object title: Send SIP Info Request required: - content_type - body properties: content_type: description: Content type of the INFO body. Must be MIME type compliant. There is a 1,400 bytes limit type: string example: application/json body: description: Content of the SIP INFO type: string example: '{"key": "value", "numValue": 100}' client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: content_type: application/json body: '{"key": "value", "numValue": 100}' client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 Serve: properties: version_id: title: Version Id type: string rollout: title: Rollout items: $ref: '#/components/schemas/RolloutSlot' type: array type: object title: Serve description: "What a rule serves when matched.\n\nExactly one of:\n- ``version_id`` — serve a specific version\n- ``rollout``\ \ — weighted random across versions; weights must sum to\n less than 100, with the leftover routing to the main version" ServiceDetail: type: object properties: cost_type: type: string description: Type of cost (MRC or OTC) example: MRC name: type: string description: Service name example: Local DIDs cost: type: string description: Cost per unit as decimal string example: '1.50' required: - cost_type - name - cost ServicePlan: type: string description: Indicates the coverage of the termination regions. enum: - global example: global default: global SessionAnalysisError: type: object required: - code - message properties: code: type: string message: type: string detail: type: string SessionAnalysisErrorResponse: type: object required: - errors properties: errors: type: array items: $ref: '#/components/schemas/SessionAnalysisError' SessionAnalysisResponse: type: object required: - session_id - cost - root - meta properties: session_id: type: string description: Identifier for the analyzed session. cost: $ref: '#/components/schemas/CostSummary' root: $ref: '#/components/schemas/EventNode' meta: $ref: '#/components/schemas/ResponseMeta' SettingsDataErrorMessage: title: SettingsDataErrorMessage required: - message type: object properties: message: title: Message type: string SettingsEnvelope: type: object properties: data: $ref: '#/components/schemas/RetrievalSettingsWrapper' SettingsRequest: type: object properties: retrieval: $ref: '#/components/schemas/RetrievalSettings' SharedCampaign: title: SharedCampaign required: - brandId - campaignId - usecase type: object properties: brandId: title: Brandid type: string description: Alphanumeric identifier of the brand associated with this campaign. campaignId: title: Campaignid type: string description: Alphanumeric identifier assigned by the registry for a campaign. This identifier is required by the NetNumber OSR SMS enabling process of 10DLC. createDate: title: Createdate type: string description: Unix timestamp when campaign was created. status: title: Status type: string description: 'Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE status. ' usecase: title: Usecase type: string description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand. description: Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or expired(non-reversible), campaign data is deleted from the OSR service. Most attributes of campaignare immutable, including **usecase**, **vertical**, **brandId** and **cspId**. SharedCampaignRecordSet: title: SharedCampaignRecordSet type: object properties: page: title: Page type: integer records: title: Records type: array items: $ref: '#/components/schemas/SharedCampaign' totalRecords: title: Totalrecords type: integer SharedToolListResponse: properties: data: items: $ref: '#/components/schemas/SharedToolResponse' type: array title: Data meta: $ref: '#/components/schemas/Meta' type: object required: - data - meta title: SharedToolListResponse SharedToolResponse: properties: id: type: string title: Id type: type: string title: Type display_name: title: Display Name type: string tool_definition: additionalProperties: true type: object title: Tool Definition timeout_ms: type: integer title: Timeout Ms default: 5000 created_at: title: Created At type: string type: object required: - id - type - tool_definition title: SharedToolResponse ShipInspection: type: object properties: record_type: type: string const: build_log_inspection description: Stable record type retained by both inspection path aliases. runtime: type: string stage: type: string enum: - build - platform - pre_build - deploy - security_review - none - pending reason: type: string snippet: type: string created_at: type: string format: date-time ShipInspectionResponseWrapper: type: object properties: data: $ref: '#/components/schemas/ShipInspection' ShortCode: type: object required: - messaging_profile_id example: record_type: short_code id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 short_code: '12345' country_code: US messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 tags: - test_customer created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' properties: record_type: type: string example: short_code enum: - short_code description: Identifies the type of the resource. readOnly: true id: type: string format: uuid description: Identifies the type of resource. readOnly: true short_code: type: string description: Short digit sequence used to address messages. readOnly: true country_code: type: string description: ISO 3166-1 alpha-2 country code. pattern: ^[A-Z]{2}$ example: US readOnly: true messaging_profile_id: type: - string - 'null' description: Unique identifier for a messaging profile. tags: type: - array description: Tags associated with the resource. items: type: string created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true SignaturePayload: type: object required: - image_base64 properties: image_base64: type: string minLength: 1 maxLength: 60000 description: PNG image, base64-encoded. signer_name: type: string nullable: true maxLength: 200 description: Optional. When absent the rendered PDF falls back to the enterprise contact's legal name. SimCardDataUsageNotification: type: object description: The SIM card individual data usage notification information. properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 79228acc-3f08-4e70-ac68-cb5aae8b537a sim_card_id: type: string format: uuid description: The identification UUID of the related SIM card resource. example: b34c1683-cd85-4493-b9a5-315eb4bc5e19 record_type: type: string example: sim_card_data_usage_notification readOnly: true threshold: type: object description: Data usage threshold that will trigger the notification. properties: amount: type: string example: '2048.1' unit: type: string example: MB enum: - MB - GB created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' example: id: 79228acc-3f08-4e70-ac68-cb5aae8b537a sim_card_id: b34c1683-cd85-4493-b9a5-315eb4bc5e19 threshold: amount: '2048.0' unit: MB created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' SimCardOrderCreate: title: SimCardOrderCreate type: object properties: address_id: type: string description: Uniquely identifies the address for the order. example: '1293384261075731499' quantity: description: The amount of SIM cards to order. type: integer minimum: 1 example: 23 required: - address_id - quantity SimCardUsageDetailRecord: type: object properties: id: type: string description: Unique identifier for this SIM Card Usage example: 3ca7bd3d-7d82-4e07-9df4-009123068320 format: uuid created_at: type: string description: Event creation time format: date-time example: '2020-07-01T00:00:00Z' closed_at: type: string description: Event close time format: date-time example: '2020-07-01T00:00:00Z' ip_address: type: string description: Ip address that generated the event example: 100.64.1.2 downlink_data: type: number description: Number of megabytes downloaded example: 0.124 imsi: type: string description: International Mobile Subscriber Identity example: '311210393720093' mcc: type: string description: Mobile country code example: '204' mnc: type: string description: Mobile network code example: '69' currency: type: string description: Telnyx account currency used to describe monetary values, including billing cost example: USD data_unit: type: string description: Unit of wireless link consumption example: MB data_rate: type: string description: Currency amount per billing unit used to calculate the Telnyx billing cost example: '0.06000' sim_group_name: type: string description: Sim group name for sim card example: SIMBillingInfo test - otheraccount sim_card_id: type: string description: Unique identifier for SIM card example: 7aa66686-b39f-456d-8edc-5b6cffb1432a sim_group_id: type: string description: Unique identifier for SIM group example: 6c07e2e9-cbc0-49ba-ac0d-c59b59646bb1 sim_card_tags: type: string description: User-provided tags example: mytag phone_number: type: string description: Telephone number associated to SIM card example: '+15188490209' uplink_data: type: number description: Number of megabytes uploaded example: 0.7653 data_cost: type: number description: Data cost example: 0.029283 record_type: type: string example: sim_card_usage default: sim_card_usage required: - record_type SimpleLine: type: object properties: type: type: string enum: - simple example: simple name: type: string description: Service name example: Port Out alias: type: string description: Service alias example: port_out quantity: type: integer description: Number of items example: 100 amount: type: string description: Total amount as decimal string example: '15.75' required: - type - name - alias - quantity - amount SimpleSIMCard: type: object title: SIMCard properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string example: sim_card readOnly: true status: $ref: '#/components/schemas/SIMCardStatus' type: type: string description: The type of SIM card readOnly: true example: physical enum: - physical - esim iccid: type: string description: 'The ICCID is the identifier of the specific SIM card/chip. Each SIM is internationally identified by its integrated circuit card identifier (ICCID). ICCIDs are stored in the SIM card''s memory and are also engraved or printed on the SIM card body during a process called personalization. ' readOnly: true example: '89310410106543789301' imsi: type: string description: 'SIM cards are identified on their individual network operators by a unique International Mobile Subscriber Identity (IMSI).
Mobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs. The IMSI is stored in the Subscriber Identity Module (SIM) inside the device and is sent by the device to the appropriate network. It is used to acquire the details of the device in the Home Location Register (HLR) or the Visitor Location Register (VLR). ' readOnly: true example: 081932214823362973 msisdn: type: string description: 'Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.
MSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which identifies the subscriber''s operator. ' readOnly: true example: '+13109976224' sim_card_group_id: type: string format: uuid description: The group SIMCardGroup identification. This attribute can be null when it's present in an associated resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 tags: type: array description: Searchable tags associated with the SIM card items: type: string example: - personal - customers - active-customers data_limit: type: object description: The SIM card individual data limit configuration. readOnly: true properties: amount: type: string example: '2048.0' unit: type: string example: MB enum: - MB - GB current_billing_period_consumed_data: type: object description: The SIM card consumption so far in the current billing cycle. readOnly: true properties: amount: type: string example: '2049.0' unit: type: string example: MB default: MB actions_in_progress: type: boolean description: Indicate whether the SIM card has any pending (in-progress) actions. readOnly: true example: true default: false created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' esim_installation_status: type: - string - 'null' description: The installation status of the eSIM. Only applicable for eSIM cards. readOnly: true example: released enum: - released - disabled version: type: string description: The version of the SIM card. readOnly: true example: '4.3' resources_with_in_progress_actions: type: array description: List of resources with actions in progress. readOnly: true items: type: object example: [] eid: type: - string - 'null' description: The Embedded Identity Document (eID) for eSIM cards. readOnly: true example: null authorized_imeis: type: - array - 'null' description: List of IMEIs authorized to use a given SIM card. items: type: string example: - '106516771852751' - '534051870479563' - '508821468377961' voice_enabled: type: boolean description: Indicates whether voice services are enabled for the SIM card. readOnly: true example: false default: false SimplifiedOTAUpdate: type: object title: OTAUpdate description: This object represents an Over the Air (OTA) update request. It allows tracking the current status of a operation that apply settings in a particular SIM card.

properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string example: ota_update readOnly: true sim_card_id: type: string format: uuid description: The identification UUID of the related SIM card resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 type: type: string description: Represents the type of the operation requested. This will relate directly to the source of the request. enum: - sim_card_network_preferences example: sim_card_network_preferences status: type: string enum: - in-progress - completed - failed example: in-progress created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' SingleManagedAccountGlobalOutboundChannels: title: Global Outbound Channels Details for a Managed Account properties: channel_limit: type: integer description: Integer value that indicates the number of allocatable global outbound channels that are allocated to the managed account. If the value is 0 then the account will have no usable channels and will not be able to perform outbound calling. example: 30 email: type: string description: The email of the managed account. example: customer@example.org id: type: string description: The user ID of the managed account. example: 096abcde-1122-3344-ab77-ff0123456789 manager_account_id: type: string description: The user ID of the manager of the account. example: beeabcde-1122-3344-ab77-ff0123456789 record_type: type: string description: The name of the type of data in the response. example: managed_account_global_outbound_settings example: channel_limit: 30 email: allocate_demo@customer.com id: 096abcde-1122-3344-ab77-ff0123456789 manager_account_id: beeabcde-1122-3344-ab77-ff0123456789 record_type: managed_account_global_outbound_settings type: object SipHeader: type: object title: SIP Header required: - name - value properties: name: description: The name of the header to add. type: string enum: - User-to-User example: User-to-User value: description: The value of the header. type: string example: value example: name: User-to-User value: value SipRegion: type: string enum: - US - Europe - Canada - Australia - Middle East title: SipRegion description: 'SIP region passed to Telnyx when initiating an outbound call. Values match the Telnyx TeXML `SipRegion` parameter exactly. Telnyx defaults to `US` when omitted.' SipRegistrationStatus: type: object properties: connection_id: type: string description: Identifier of the connection associated with the credential. connection_name: type: string description: Human-readable connection name. credential_type: type: string description: The credential type that was looked up. enum: - uac_external_credential - telephony_credential - sip_credential_connection credential_username: type: string description: SIP username used for the registration. registered: type: boolean description: True if the endpoint is currently registered. sip_registration_status: type: string description: Human-readable registration status derived from the registrar state. enum: - unregistering - connection_disabled - standby - failed - trying - registered - unknown last_registration_response: type: string nullable: true description: SIP response from the last registration attempt. example: 200 OK sip_registration_details: type: object description: 'Detailed registration information reported by the registrar. The populated fields depend on `credential_type`: UAC external credentials report `auth_retries`, `uptime`, `next_action_at`, `failures`, and `sip_uri_user_host`; telephony credentials and SIP credential connections report `ua_ip`, `ua_port`, `transport`, and `last_modified`. All types report `expires`, but its unit differs by `credential_type` — see that field.' properties: auth_retries: type: integer description: Number of authentication retries on the last attempt (uac_external_credential). expires: type: integer description: 'When the current registration expires. The unit depends on `credential_type`: for `uac_external_credential` this is a Unix timestamp (seconds since epoch) of the next scheduled re-registration; for `telephony_credential` and `sip_credential_connection` this is the registration lifetime in seconds as negotiated with the registrar (the `Expires` value, defaulting to 3600 when the endpoint sends none).' uptime: type: integer description: Registration uptime reported by the registrar (uac_external_credential). next_action_at: type: integer description: Unix timestamp of the next scheduled registration action (uac_external_credential). failures: type: integer description: Count of consecutive registration failures (uac_external_credential). sip_uri_user_host: type: string description: SIP URI user@host of the registered contact (uac_external_credential). ua_ip: type: string description: IP address of the registered user agent (telephony_credential and sip_credential_connection). ua_port: type: integer description: Port of the registered user agent (telephony_credential and sip_credential_connection). transport: type: string description: Transport used for the registration, e.g. UDP/TCP/TLS (telephony_credential and sip_credential_connection). last_modified: type: string description: Timestamp when the registration was last modified (telephony_credential and sip_credential_connection). SiprecConnector: type: object title: SIPREC connector configuration required: - host - port - name properties: host: description: Hostname/IPv4 address of the SIPREC SRS. type: string example: siprec.telnyx.com port: description: Port for the SIPREC SRS. type: integer example: 5060 name: description: Name for the SIPREC connector resource. type: string example: my-siprec-connector app_subdomain: description: Subdomain to route the call when using Telnyx SRS (optional for non-Telnyx SRS). type: string example: my-app-domain example: host: siprec.telnyx.com port: 5060 name: my-siprec-connector app_subdomain: my-app SiprecConnectorResponse: type: object title: SIPREC Connector Response required: - data properties: data: type: object title: SIPREC Connector properties: record_type: type: string example: siprec_connector name: type: string description: Name for the SIPREC connector resource. example: siprec-connector host: type: string description: Hostname/IPv4 address of the SIPREC SRS. example: siprec.telnyx.com port: type: integer description: Port for the SIPREC SRS. example: 5060 app_subdomain: type: string description: Subdomain to route calls when using Telnyx SRS (optional). example: my-app-domain created_at: type: string description: ISO 8601 formatted date/time of creation. example: '2024-01-23T18:10:02.574Z' updated_at: type: string description: ISO 8601 formatted date/time of last update. example: '2024-01-23T18:10:02.574Z' SkipTurnTool: properties: type: type: string enum: - skip_turn shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true skip_turn: $ref: '#/components/schemas/SkipTurnToolParams' type: object required: - type - skip_turn title: SkipTurnTool SkipTurnToolParams: properties: description: type: string default: This tool is used to skip the assistant turn without producing a response. description: The description of the function that will be passed to the assistant. type: object title: SkipTurnToolParams SlimPhoneNumberDetailed: type: object example: id: '1293384261075731499' record_type: phone_number phone_number: '+19705555098' country_iso_alpha2: US status: active external_pin: '1234' connection_id: '1293384261075731499' customer_reference: customer-reference billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 emergency_enabled: true emergency_address_id: '1315261609962112019' emergency_status: active call_forwarding_enabled: true cnam_listing_enabled: true caller_id_name_enabled: true call_recording_enabled: true t38_fax_gateway_enabled: true phone_number_type: local inbound_call_screening: disabled purchased_at: '2019-10-23T18:10:00.000Z' created_at: '2019-10-23T18:10:00.000Z' updated_at: '2019-10-24T18:10:00.000Z' hd_voice_enabled: true activated_at: '2019-10-23T18:10:00.000Z' properties: id: $ref: '#/components/schemas/numbers_IntId' record_type: type: string example: phone_number_slim description: Identifies the type of the resource. readOnly: true phone_number: type: string description: The +E.164-formatted phone number associated with this record. readOnly: true country_iso_alpha2: type: string description: The ISO 3166-1 alpha-2 country code of the phone number. example: US readOnly: true status: type: string description: The phone number's current status. enum: - purchase-pending - purchase-failed - port-pending - port-failed - active - deleted - emergency-only - ported-out - port-out-pending - requirement-info-pending - requirement-info-under-review - requirement-info-exception - provision-pending readOnly: true external_pin: type: string description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism. connection_id: type: string description: Identifies the connection associated with the phone number. customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 billing_group_id: type: string description: Identifies the billing group associated with the phone number. emergency_enabled: type: boolean description: Indicates whether emergency services are enabled for this number. readOnly: true emergency_address_id: type: string description: Identifies the emergency address associated with the phone number. readOnly: true emergency_status: type: string description: Indicates the status of the provisioning of emergency services for the phone number. This field contains information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned but is not yet enabled/disabled. enum: - active - deprovisioning - disabled - provisioning - provisioning-failed call_forwarding_enabled: type: boolean default: true description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints. readOnly: true cnam_listing_enabled: type: boolean description: Indicates whether a CNAM listing is enabled for this number. readOnly: true caller_id_name_enabled: type: boolean description: Indicates whether caller ID is enabled for this number. readOnly: true call_recording_enabled: type: boolean description: Indicates whether call recording is enabled for this number. readOnly: true t38_fax_gateway_enabled: type: boolean description: Indicates whether T38 Fax Gateway for inbound calls to this number. readOnly: true purchased_at: type: string description: ISO 8601 formatted date indicating when the resource was purchased. readOnly: true created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. readOnly: true phone_number_type: type: string description: 'The phone number''s type. Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.' enum: - local - toll_free - mobile - national - shared_cost - landline - tollfree - shortcode - longcode readOnly: true updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true hd_voice_enabled: type: boolean description: Indicates whether HD voice is enabled for this number. readOnly: true inbound_call_screening: type: string enum: - disabled - reject_calls - flag_calls default: disabled description: The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it. activated_at: description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked. anyOf: - type: string format: date-time - type: 'null' readOnly: true SonioxProviderParams: type: object description: Soniox provider-specific parameters. Every voice speaks all supported languages; set `language` to the language of the text. required: - voice_id properties: voice_id: type: string description: Soniox voice name from the [voices listing](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices), for example `Emma`. model_id: type: string description: Soniox model. enum: - tts-rt-v2 default: tts-rt-v2 language: type: string description: Two-letter ISO 639-1 code of the text. default: en speed: type: number format: float description: Speaking rate. 1.0 is normal speed. minimum: 0.7 maximum: 1.3 default: 1.0 reduce_silence: type: boolean description: Shortens the pauses between words. default: false audio_format: type: string description: Audio output format. enum: - mp3 - wav - pcm_s16le - pcm_mulaw - pcm_alaw default: mp3 sample_rate: type: integer description: Audio sample rate in Hz. `pcm_mulaw` and `pcm_alaw` accept 8000 only; `mp3` does not accept 8000. Defaults to 24000, or 8000 for `pcm_mulaw` and `pcm_alaw`. enum: - 8000 - 16000 - 24000 - 44100 - 48000 SonioxVoiceSettings: type: object title: Soniox Voice Settings properties: type: type: string enum: - soniox description: Voice settings provider type speed: type: number format: float minimum: 0.7 maximum: 1.3 default: 1.0 description: Speaking rate. 1.0 is normal speed. reduce_silence: type: boolean default: false description: Shortens the pauses between words. required: - type SoundModifications: type: object title: Sound modifications description: Use this field to modify sound effects, for example adjust the pitch. properties: pitch: description: Set the pitch directly, value should be > 0, default 1 (lower = lower tone) type: number format: float example: 0.8 semitone: description: Adjust the pitch in semitones, values should be between -14 and 14, default 0 type: number format: float example: -10 octaves: description: Adjust the pitch in octaves, values should be between -1 and 1, default 0 type: number format: float example: -0.5 track: description: The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound` type: string example: inbound default: outbound example: pitch: 0.8 semitone: -2 octaves: 0.1 track: both Source: properties: id: type: string title: Id description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by `ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.' session_id: anyOf: - type: string - type: 'null' title: Session Id description: The session this source was ingested as. Null for a remembered fact. memory_count: type: integer title: Memory Count description: Memories extracted from this source. A memory derived from several sources is not counted here. created_at: anyOf: - type: string - type: 'null' title: Created At description: When the source was first stored. updated_at: anyOf: - type: string - type: 'null' title: Updated At description: When the source was last written; re-ingesting moves it. type: object required: - id - session_id - memory_count title: Source SourceEnvelope: type: object description: Envelope containing a single collection source. properties: data: $ref: '#/components/schemas/collections_Source' SourceListEnvelope: type: object properties: data: type: array items: $ref: '#/components/schemas/collections_Source' SourceListResponse: properties: data: items: $ref: '#/components/schemas/Source' type: array title: Data meta: $ref: '#/components/schemas/PageMeta' type: object required: - data - meta title: SourceListResponse SourceReconcileEnvelope: type: object properties: data: type: array items: $ref: '#/components/schemas/collections_Source' meta: $ref: '#/components/schemas/SourceReconcileMeta' SourceReconcileMeta: type: object description: Reports which source IDs were added, retained, and removed by a replace operation. properties: added: type: array items: type: string retained: type: array items: type: string removed: type: array items: type: string SourceRequest: type: object required: - source_type properties: source_type: $ref: '#/components/schemas/SourceType' bucket_id: type: string description: The Telnyx Storage bucket name. Required when `source_type` is `bucket`; ignored otherwise. example: policy-docs allOf: - if: properties: source_type: const: bucket required: - source_type then: properties: bucket_id: type: string required: - bucket_id SourceResponse: properties: data: $ref: '#/components/schemas/SourceWithContent' type: object required: - data title: SourceResponse SourceType: type: string description: The type of Telnyx data attached as a source. `bucket` requires an additional `bucket_id`. Only `voice` is searchable today; `meeting_bot`, `message`, and `bucket` attach but are not yet searchable (Coming soon). enum: - voice - meeting_bot - message - bucket example: voice SourceWithContent: properties: id: type: string title: Id description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by `ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.' session_id: anyOf: - type: string - type: 'null' title: Session Id description: The session this source was ingested as. Null for a remembered fact. memory_count: type: integer title: Memory Count description: Memories extracted from this source. A memory derived from several sources is not counted here. created_at: anyOf: - type: string - type: 'null' title: Created At description: When the source was first stored. updated_at: anyOf: - type: string - type: 'null' title: Updated At description: When the source was last written; re-ingesting moves it. content: title: Content description: 'What was stored, in the shape it was sent: an ingested JSON body as JSON, a string body or a remembered fact as a string. A session ingested before formats were recorded is returned as the text it was stored as.' anyOf: - type: object additionalProperties: true - type: - array - string - number - boolean type: object required: - id - session_id - memory_count - content title: SourceWithContent SpeakMeetingSessionRequest: title: SpeakMeetingSessionRequest type: object additionalProperties: false required: - text properties: text: type: string minLength: 1 maxLength: 4000 description: Text for the bot to speak. voice: type: string minLength: 1 maxLength: 100 description: Voice identifier to use for this utterance. When supplied, it overrides the session-default voice configured at creation; otherwise the speak action uses that session default. interrupt: type: boolean description: If true, interrupt any currently playing audio to speak this text immediately. SpeakNode: properties: type: type: string const: speak title: Type description: Node kind discriminator. Always `speak` for a speak node. default: speak id: type: string title: Id description: Caller-supplied unique identifier for this node within the flow. name: title: Name description: Optional human-readable label, displayed in authoring UIs. type: string message: type: string title: Message description: Message delivered to the user verbatim when the flow reaches this node. No LLM turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders are interpolated from the conversation's dynamic variables; an unresolved placeholder renders as an empty string. After delivering, the flow routes via the node's outgoing `llm` / `expression` edges (commonly a single unconditional edge). position: description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips so frontends can persist graph layout across reloads. $ref: '#/components/schemas/NodePosition' type: object required: - id - message title: SpeakNode description: A standalone scripted-message step in a flow, as returned by the API. SpeakNodeReq: properties: type: type: string const: speak title: Type description: Node kind discriminator. Always `speak` for a speak node. default: speak id: type: string title: Id description: Caller-supplied unique identifier for this node within the flow. example: n_greeting name: title: Name description: Optional human-readable label, displayed in authoring UIs. type: string example: Greeting message: type: string title: Message description: Message delivered to the user verbatim when the flow reaches this node. No LLM turn — the text is spoken/sent exactly as written. `{{variable}}` placeholders are interpolated from the conversation's dynamic variables; an unresolved placeholder renders as an empty string. After delivering, the flow routes via the node's outgoing `llm` / `expression` edges (commonly a single unconditional edge). example: Thanks for calling, {{caller_name}}. Connecting you now. position: description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips so frontends can persist graph layout across reloads. $ref: '#/components/schemas/NodePosition' example: x: 60 y: 80 type: object required: - id - message title: SpeakNodeReq description: 'A standalone scripted-message step in a flow, as supplied by clients. Unlike a prompt node, a speak node has no instructions or model — it isn''t an LLM turn. Reaching it delivers `message` to the user verbatim (with `{{variable}}` interpolation), then routes via outgoing `llm` / `expression` edges.' example: id: n_greeting message: Thanks for calling, {{caller_name}}. Connecting you now. name: Greeting position: x: 60 y: 80 type: speak SpeakRequest: type: object title: Speak Request required: - payload - voice properties: payload: description: The text or SSML to be converted into speech. There is a 3,000 character limit. type: string example: Say this on the call payload_type: description: The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML). default: text type: string enum: - text - ssml example: ssml service_level: description: This parameter impacts speech quality, language options and payload types. When using `basic`, only the `en-US` language and payload type `text` are allowed. default: premium type: string enum: - basic - premium example: premium stop: description: When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue. type: string example: current voice: description: "Specifies the voice used in speech synthesis.\n\n- Define voices using the format `..`.\ \ Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n\ - **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic,\ \ human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available\ \ voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:**\ \ Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`).\ \ For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\ \ Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs..`\ \ (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs,\ \ you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\"\ : \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)\ \ for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n- **Telnyx:** Use\ \ `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed\ \ and other synthesis parameters. `Bayan` provides Arabic (multiple dialects) and English voices (e.g., `Telnyx.Bayan.Ahmed`,\ \ `Telnyx.Bayan.Amanda`). `Sukhan` provides Urdu voices (e.g., `Telnyx.Sukhan.urdu-professor`); `voice_speed`\ \ is not supported.\n- **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`).\ \ Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings`\ \ to configure speed, volume, pitch, and language_boost.\n- **Resemble:** Use `Resemble.Turbo.` (e.g.,\ \ `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate,\ \ and format.\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`,\ \ `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`. Use `voice_settings` to configure `delivery_mode`\ \ (`STABLE`, `BALANCED`, `CREATIVE`), supported by `TTS2` only.\n- **Fish Audio:** Use `FishAudio..`\ \ (e.g., `FishAudio.s2.1-pro.`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish\ \ Voice-Library reference ID.\n- **Soniox:** Use `Soniox..` (e.g., `Soniox.tts-rt-v2.Emma`).\ \ Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices).\ \ Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for\ \ example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n\ - **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:**\ \ Use `Humain.` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`,\ \ `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.\n\n\ For service_level basic, you may define the gender of the speaker (male or female)." type: string example: Telnyx.KokoroTTS.af voice_settings: description: The settings associated with the voice selected oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' - $ref: '#/components/schemas/SonioxVoiceSettings' discriminator: propertyName: type mapping: elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' aws: '#/components/schemas/AWSVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' soniox: '#/components/schemas/SonioxVoiceSettings' language: description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified. type: string enum: - arb - cmn-CN - cy-GB - da-DK - de-DE - en-AU - en-GB - en-GB-WLS - en-IN - en-US - es-ES - es-MX - es-US - fr-CA - fr-FR - hi-IN - is-IS - it-IT - ja-JP - ko-KR - nb-NO - nl-NL - pl-PL - pt-BR - pt-PT - ro-RO - ru-RU - sv-SE - tr-TR example: en-US client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 loop: $ref: '#/components/schemas/Loopcount' description: The number of times to play the audio file. Use `infinity` to loop indefinitely. Defaults to 1. target_legs: description: Specifies which legs of the call should receive the spoken audio. type: string enum: - self - opposite - both default: self example: both example: payload: Say this on the call payload_type: text service_level: basic stop: current voice: female language: arb client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 SpeechmaticsTranscriptionLanguage: title: Speechmatics transcription engine list of languages type: string description: Language to use for speech recognition 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 — a mismatch is rejected with 422 rather than binding null for the ones you left out. (Not enforced for multi-statement scripts or named parameters, where the placeholder count is not the number bound.) items: type: - string - number - boolean - 'null' example: - alice required: - sql SqlDatabaseQueryResponseWrapper: type: object properties: data: $ref: '#/components/schemas/SqlDatabaseQueryResult' SqlDatabaseQueryResult: type: object properties: results: type: array description: The result rows, each a map of column name to value. Empty for statements that return no rows. items: type: object additionalProperties: true success: type: boolean example: true count: type: integer description: Number of rows returned. example: 1 duration: type: number description: Wall-clock duration of the request, in milliseconds. example: 2.5 meta: $ref: '#/components/schemas/SqlDatabaseQueryResultMeta' SqlDatabaseQueryResultMeta: type: object properties: duration: type: number description: Wall-clock duration of the statement, in milliseconds. example: 1.2 rows_read: type: integer example: 3 rows_written: type: integer example: 0 last_row_id: type: integer description: Rowid of the last inserted row, when applicable. example: 0 changes: type: integer description: Number of rows added, changed, or removed by the statement. example: 0 SqlDatabaseResponseWrapper: type: object properties: data: $ref: '#/components/schemas/SqlDatabase' StartConferenceRecordingRequest: type: object title: Start Conference Recording Request required: - format properties: format: description: The audio file format used when storing the conference recording. Can be either `mp3` or `wav`. type: string enum: - wav - mp3 example: mp3 command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `conference_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 channels: description: When `dual`, final audio file will be stereo recorded with the conference creator on the first channel, and the rest on the second channel. enum: - single - dual type: string default: single example: dual play_beep: description: If enabled, a beep sound will be played at the start of a recording. type: boolean example: true trim: description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording. enum: - trim-silence type: string example: trim-silence custom_file_name: description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix. type: string minLength: 1 maxLength: 40 example: my_recording_file_name region: $ref: '#/components/schemas/ConferenceRegion' example: format: wav command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 play_beep: true StartForkingRequest: type: object title: Start Forking Request properties: rx: description: The network target, , where the call's incoming RTP media packets should be forwarded. type: string example: udp:192.0.2.1:9000 stream_type: description: Optionally specify a media type to stream. If `decrypted` selected, Telnyx will decrypt incoming SIP media before forking to the target. `rx` and `tx` are required fields if `decrypted` selected. type: string enum: - decrypted default: decrypted example: decrypted tx: description: The network target, , where the call's outgoing RTP media packets should be forwarded. type: string example: udp:192.0.2.1:9001 client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: rx: udp:192.0.2.1:9000 tx: udp:192.0.2.1:9001 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 StartRecordingRequest: type: object title: Start Recording Request required: - format - channels properties: format: description: The audio file format used when storing the call recording. Can be either `mp3` or `wav`. type: string enum: - wav - mp3 example: mp3 channels: description: When `dual`, final audio file will be stereo recorded with the first leg on channel A, and the rest on channel B. enum: - single - dual type: string example: single client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 play_beep: description: If enabled, a beep sound will be played at the start of a recording. type: boolean example: true max_length: description: Defines the maximum length for the recording in seconds. The minimum value is 0. The maximum value is 14400. The default value is 0 (infinite) type: integer example: 100 default: 0 format: int32 timeout_secs: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite) type: integer example: 100 default: 0 format: int32 recording_track: description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single channel). type: string example: outbound default: both enum: - both - inbound - outbound trim: description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording. enum: - trim-silence type: string example: trim-silence custom_file_name: description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix. type: string minLength: 1 maxLength: 40 example: my_recording_file_name transcription: description: Enable post recording transcription. The default value is false. type: boolean default: false example: true transcription_engine: description: 'Engine to use for speech recognition. `A` - `Google`, `B` - `Telnyx`, `deepgram/nova-3` - `Deepgram Nova-3`. Note: `deepgram/nova-3` supports only `en` and `en-{Region}` languages.' type: string enum: - A - B - deepgram/nova-3 default: A example: A transcription_language: $ref: '#/components/schemas/TranscriptionLanguage' transcription_profanity_filter: description: Enables profanity_filter. Applies to `google` engine only. type: boolean default: false example: true transcription_speaker_diarization: description: Enables speaker diarization. Applies to `google` engine only. type: boolean default: false example: true transcription_min_speaker_count: description: Defines minimum number of speakers in the conversation. Applies to `google` engine only. type: integer example: 4 default: 2 format: int32 transcription_max_speaker_count: description: Defines maximum number of speakers in the conversation. Applies to `google` engine only. type: integer example: 4 default: 6 format: int32 example: format: wav channels: single client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 play_beep: true max_length: 0 timeout_secs: 0 transcription: true transcription_engine: B transcription_language: en StartSiprecRequest: type: object title: Start Siprec Request properties: connector_name: description: Name of configured SIPREC connector to be used. type: string example: my-siprec-connector sip_transport: description: Specifies SIP transport protocol. type: string enum: - udp - tcp - tls default: udp example: tcp siprec_track: description: Specifies which track should be sent on siprec session. type: string enum: - inbound_track - outbound_track - both_tracks default: both_tracks example: outbound_track include_metadata_custom_headers: description: When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise, they’ll be added to sip headers. example: true type: boolean enum: - true - false secure: description: Controls whether to encrypt media sent to your SRS using SRTP and TLS. When set you need to configure SRS port in your connector to 5061. example: true type: boolean enum: - true - false session_timeout_secs: description: Sets `Session-Expires` header to the INVITE. A reinvite is sent every half the value set. Usefull for session keep alive. Minimum value is 90, set to 0 to disable. example: 900 type: integer default: 1800 client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d example: connector_name: my-siprec-connector siprec_track: both_tracks client_state: aGF2ZSBhIG5pY2UgZGF5ID1d StartSpeakingPlan: type: object title: StartSpeakingPlan description: Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead. properties: wait_seconds: type: number format: float default: 0.4 minimum: 0.0 description: Minimum seconds to wait before the assistant starts speaking. transcription_endpointing_plan: $ref: '#/components/schemas/TranscriptionEndpointingPlan' StartStreamingRequest: type: object title: Start Streaming Request properties: stream_url: description: The destination WebSocket address where the stream is going to be delivered. type: string example: wss://www.example.com/websocket stream_track: description: Specifies which track should be streamed. type: string enum: - inbound_track - outbound_track - both_tracks default: inbound_track example: both_tracks stream_codec: $ref: '#/components/schemas/StreamCodec' stream_bidirectional_mode: $ref: '#/components/schemas/StreamBidirectionalMode' stream_bidirectional_codec: $ref: '#/components/schemas/StreamBidirectionalCodec' stream_bidirectional_target_legs: $ref: '#/components/schemas/StreamBidirectionalTargetLegs' stream_bidirectional_sampling_rate: $ref: '#/components/schemas/StreamBidirectionalSamplingRate' enable_dialogflow: description: Enables Dialogflow for the current call. The default value is false. type: boolean default: false example: true dialogflow_config: $ref: '#/components/schemas/DialogflowConfig' client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 custom_parameters: description: Custom parameters to be sent as part of the WebSocket connection. type: array items: type: object properties: name: type: string description: The name of the custom parameter. value: type: string description: The value of the custom parameter. example: - name: param1 value: value1 - name: param2 value: value2 stream_auth_token: description: An authentication token to be sent as part of the WebSocket connection. Maximum length is 4000 characters. type: string maxLength: 4000 example: your-auth-token example: stream_url: wss://www.example.com/websocket stream_track: both_tracks client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 enable_dialogflow: false dialogflow_config: analyze_sentiment: false partial_automated_agent_reply: false Status: type: string enum: - active - expired - removed StepStatus: type: string enum: - pending - in_progress - completed - skipped - failed title: StepStatus StockExchange: title: StockExchange enum: - NONE - NASDAQ - NYSE - AMEX - AMX - ASX - B3 - BME - BSE - FRA - ICEX - JPX - JSE - KRX - LON - NSE - OMX - SEHK - SSE - STO - SWX - SZSE - TSX - TWSE - VSE description: (Required for public company) stock exchange. example: NASDAQ type: string StockSymbolBrandIdentifier: type: object additionalProperties: false properties: identifier_type: const: STOCK_SYMBOL value: type: string minLength: 1 maxLength: 255 pattern: ^\S+:\S+$ description: A stock symbol using EXCHANGE:SYMBOL. required: - identifier_type - value StopForkingRequest: type: object title: Stop Forking Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 stream_type: description: Optionally specify a `stream_type`. This should match the `stream_type` that was used in `fork_start` command to properly stop the fork. type: string enum: - raw - decrypted default: raw example: decrypted example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 StopGatherRequest: type: object title: Stop Gather Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 StopRecordingConferenceRequest: type: object title: Stop Recording Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: description: Uniquely identifies the resource. type: string format: uuid example: 6e00ab49-9487-4364-8ad6-23965965afb2 region: $ref: '#/components/schemas/ConferenceRegion' example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: 6e00ab49-9487-4364-8ad6-23965965afb2 StopRecordingRequest: type: object title: Stop Recording Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: description: Uniquely identifies the resource. type: string format: uuid example: 6e00ab49-9487-4364-8ad6-23965965afb2 example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: 6e00ab49-9487-4364-8ad6-23965965afb2 StopSiprecRequest: type: object title: Stop Siprec Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 StopStreamingRequest: type: object title: Stop Streaming Request properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 stream_id: type: string format: uuid example: 1edb94f9-7ef0-4150-b502-e0ebadfd9491 description: Identifies the stream. If the `stream_id` is not provided the command stops all streams associated with a given `call_control_id`. example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 stream_id: 1edb94f9-7ef0-4150-b502-e0ebadfd9491 StoreMedia: description: Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together. type: boolean default: false StorePreview: description: Should fax preview be stored on temporary URL. type: boolean default: false StoredPaymentTransactionRequest: type: object required: - amount properties: amount: type: string description: Amount in dollars and cents, e.g. "120.00" example: '120.00' StoredPaymentTransactionResponse: type: object properties: data: type: object properties: id: type: string record_type: type: string enum: - transaction amount_cents: type: integer processor_status: type: string amount_currency: type: string created_at: type: string format: date-time auto_recharge: type: boolean transaction_processing_type: type: string enum: - stored_payment StreamBidirectionalCodec: type: string title: Bidirectional Stream Codec description: Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive. enum: - PCMU - PCMA - G722 - OPUS - AMR-WB - L16 default: PCMU example: G722 StreamBidirectionalMode: type: string title: Bidirectional Stream Mode description: Configures method of bidirectional streaming (mp3, rtp). enum: - mp3 - rtp default: mp3 example: rtp StreamBidirectionalSamplingRate: type: integer title: Bidirectional Stream Sampling Rate description: Audio sampling rate. enum: - 8000 - 16000 - 22050 - 24000 - 48000 default: 8000 example: 16000 StreamBidirectionalTargetLegs: type: string title: Bidirectional Stream Target Legs description: Specifies which call legs should receive the bidirectional stream audio. enum: - both - self - opposite default: opposite example: both StreamCodec: description: Specifies the codec to be used for the streamed audio. When set to 'default' or when transcoding is not possible, the codec from the call will be used. title: Stream Codec type: string enum: - PCMU - PCMA - G722 - OPUS - AMR-WB - L16 - default default: default example: PCMA StreamName: description: The user specified name of Stream. example: My stream type: string StreamStatus: description: The status of the Stream you wish to update. default: stopped example: stopped type: string enum: - stopped StreamTrack: description: Tracks to be included in the stream default: inbound_track example: both_tracks type: string enum: - inbound_track - outbound_track - both_tracks StringLiteralExpression: description: Constant string value. example: type: string_literal value: gold properties: type: const: string_literal title: Type type: string value: description: Literal string value. example: gold title: Value type: string required: - type - value title: StringLiteralExpression type: object SttClientEvent: type: string format: binary description: Binary audio data in mp3, wav, linear16, or linear32 format, per `input_format`. SttDeleteDetailReportResponse: type: object properties: data: $ref: '#/components/schemas/SttDetailReportResponse' SttDetailReportResponse: type: object properties: id: type: string description: Identifies the resource example: ab76c3b6-80cd-11eb-9439-0242ac130002 created_at: type: string format: date-time example: '2020-07-01T00:00:00-06:00' start_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' end_date: type: string format: date-time example: '2020-07-01T00:00:00-06:00' download_link: type: string description: URL to download the report example: https://portal-cdrs-usage.s3.amazonaws.com status: type: string enum: - PENDING - COMPLETE - FAILED - EXPIRED record_type: type: string example: speech_to_text_report SttDetailedRequest: required: - start_date - end_date type: object properties: start_date: type: string description: Start date in ISO format with timezone format: date-time example: '2020-07-01T00:00:00-06:00' end_date: type: string description: End date in ISO format with timezone (date range must be up to one month) format: date-time example: '2020-07-01T00:00:00-06:00' description: Request object for Speech to Text detailed report SttErrorFrame: type: object description: Server-to-client frame indicating an error during transcription. The connection may be closed shortly after. properties: type: type: string const: error description: Frame type identifier. error: type: string description: Error message describing what went wrong. required: - type - error SttGetDetailReportByIdResponse: type: object properties: data: $ref: '#/components/schemas/SttDetailReportResponse' SttGetDetailReportResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/SttDetailReportResponse' SttPostDetailReportResponse: type: object properties: data: $ref: '#/components/schemas/SttDetailReportResponse' SttServerEvent: description: Union of all server-to-client WebSocket events for STT streaming. oneOf: - $ref: '#/components/schemas/TranscriptFrame' - $ref: '#/components/schemas/SttErrorFrame' discriminator: propertyName: type mapping: transcript: '#/components/schemas/TranscriptFrame' error: '#/components/schemas/SttErrorFrame' SttUsageReportResponse: type: object properties: data: type: object SubNumberOrder: properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true order_request_id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c293 readOnly: true country_code: type: string example: US readOnly: true phone_number_type: type: string example: local enum: - local - toll_free - mobile - national - shared_cost - landline user_id: type: string format: uuid example: d70873cd-7c98-401a-81b6-b1ae08246995 regulatory_requirements: type: array items: $ref: '#/components/schemas/SubNumberOrderRegulatoryRequirement' record_type: type: string example: sub_number_order readOnly: true phone_numbers_count: type: integer description: The count of phone numbers in the number order. example: 1 readOnly: true created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the number order was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number order was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true requirements_met: type: boolean description: True if all requirements are met for every phone number, false otherwise. example: true readOnly: true status: type: string enum: - pending - success - failure description: The status of the order. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 is_block_sub_number_order: type: boolean description: True if the sub number order is a block sub number order example: false readOnly: true type: object SubNumberOrderPhoneNumber: type: object properties: id: type: string format: uuid phone_number: type: string country_code: type: string phone_number_type: type: string requirements_met: type: boolean requirements_status: type: string status: type: string record_type: type: string bundle_id: type: - string - 'null' format: uuid regulatory_requirements: type: array items: type: object properties: requirement_id: type: string format: uuid field_type: type: string field_value: type: string status: type: string SubNumberOrderRegulatoryRequirement: properties: record_type: type: string example: phone_number_regulatory_requirement readOnly: true requirement_id: type: string format: uuid description: Unique id for a requirement. example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_type: type: string enum: - textual - datetime - address - document example: address readOnly: true type: object SubNumberOrderRegulatoryRequirementWithValue: properties: record_type: type: string example: phone_number_regulatory_requirement readOnly: true requirement_id: type: string format: uuid description: Unique id for a requirement. example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_type: type: string enum: - textual - datetime - address - document example: address readOnly: true field_value: type: string description: The value of the requirement, this could be an id to a resource or a string value. example: 45f45a04-b4be-4592-95b1-9306b9db2b21 type: object SubNumberOrderRequirementGroupResponse: type: object properties: data: type: object properties: id: type: string format: uuid order_request_id: type: string format: uuid country_code: type: string phone_number_type: type: string phone_numbers_count: type: integer requirements_met: type: boolean is_block_sub_number_order: type: boolean status: type: string customer_reference: type: string created_at: type: string format: date-time updated_at: type: string format: date-time record_type: type: string regulatory_requirements: type: array items: $ref: '#/components/schemas/RegulatoryRequirement' phone_numbers: type: array items: $ref: '#/components/schemas/SubNumberOrderPhoneNumber' example: data: country_code: AT created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' regulatory_requirements: - record_type: phone_number_regulatory_requirement requirement_id: 2708e569-696a-4fc7-9305-5fdb3eb9c7dd field_type: textual phone_numbers_count: 1 phone_numbers: - country_code: AT regulatory_requirements: - field_value: '4804570924' requirement_id: 2708e569-696a-4fc7-9305-5fdb3eb9c7dd field_type: textual status: pending-approval bundle_id: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d requirements_status: requirement-info-under-review phone_number_type: toll_free requirements_met: false record_type: number_order_phone_number status: pending id: 613d517a-0432-4bae-a785-c11033bd0985 phone_number: '+43800300238' is_block_sub_number_order: false phone_number_type: toll_free requirements_met: false id: f826ed66-b27c-4340-9dc0-57dc3459f1bd order_request_id: a11d58fe-88a4-494a-b752-8dea411993c6 status: pending customer_reference: missing record_type: sub_number_order SubNumberOrdersReport: type: object properties: id: type: string format: uuid example: cada7e84-122b-4b47-bc66-58c7c3becd40 description: Identifies the resource. readOnly: true order_type: type: string example: sub_number_order description: The type of order report. readOnly: true filters: type: object description: The filters that were applied to generate this report properties: status: type: string example: success country_code: type: string example: US created_at_gt: type: string format: date-time example: '2023-04-05T10:22:08.230549Z' created_at_lt: type: string format: date-time example: '2025-06-05T10:22:08.230549Z' order_request_id: type: string format: uuid example: 991b8ff5-4daf-4826-9a22-e3991b444a9c customer_reference: type: string example: STRING status: type: string enum: - pending - success - failed - expired default: pending example: pending description: Indicates the completion level of the sub number orders report. The report must have a status of 'success' before it can be downloaded. user_id: type: string format: uuid example: 0d7ef697-df19-413a-b724-56b0539f5397 description: The ID of the user who created the report. readOnly: true created_at: type: string format: date-time example: '2025-06-11T13:21:40.967339+00:00' description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string format: date-time example: '2025-06-11T13:21:45.753260+00:00' description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true example: order_type: sub_number_order filters: status: success country_code: US created_at_gt: '2023-04-05T10:22:08.230549Z' created_at_lt: '2025-06-05T10:22:08.230549Z' order_request_id: 991b8ff5-4daf-4826-9a22-e3991b444a9c customer_reference: STRING status: pending created_at: '2025-06-11T13:21:40.967339+00:00' user_id: 0d7ef697-df19-413a-b724-56b0539f5397 updated_at: '2025-06-11T13:21:45.753260+00:00' id: cada7e84-122b-4b47-bc66-58c7c3becd40 SuccessResponse: type: object description: Status envelope used by the signup and magic-link flows. required: - success - message properties: success: type: boolean description: Whether the request was accepted. example: true message: type: string description: Human-readable status message. example: A one-time sign-in link has been sent to your email address. Summary: type: object properties: lines: type: array items: $ref: '#/components/schemas/SummaryLine' description: List of charge summary lines adjustments: type: array items: $ref: '#/components/schemas/AdjustmentLine' description: List of billing adjustments example: lines: - type: comparative name: Local DIDs alias: local new_this_month: quantity: 10 mrc: '25.50' otc: '5.00' existing_this_month: quantity: 8 mrc: '20.00' - type: simple name: Port Out alias: port_out quantity: 100 amount: '15.75' adjustments: - amount: '-10.00' description: Credit for service outage event_date: '2025-05-15' required: - lines - adjustments SummaryAndTotal: type: object properties: user_id: type: string description: User identifier example: 0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8 start_date: type: string format: date description: Start date of the summary period example: '2025-05-01' end_date: type: string format: date description: End date of the summary period example: '2025-06-01' user_email: type: string format: email description: User email address example: user@example.com currency: type: string description: Currency code example: USD summary: $ref: '#/components/schemas/Summary' total: $ref: '#/components/schemas/TotalSummary' required: - user_id - start_date - end_date - user_email - currency - summary - total SummaryLine: oneOf: - $ref: '#/components/schemas/ComparativeLine' - $ref: '#/components/schemas/SimpleLine' discriminator: propertyName: type SummaryRequest: properties: bucket: type: string description: The name of the bucket that contains the file to be summarized. filename: type: string description: The name of the file to be summarized. system_prompt: type: string description: A system prompt to guide the summary generation. type: object required: - bucket - filename title: SummaryRequest SummaryResponse: properties: data: $ref: '#/components/schemas/ProfileSummary' type: object required: - data title: SummaryResponse SummaryResponseData: properties: data: $ref: '#/components/schemas/inference-embedding_SummaryResponse' type: object required: - data title: SummaryResponseData SummarySettings: properties: instructions: anyOf: - type: string maxLength: 2000 - type: 'null' title: Instructions description: 'Free-form instructions that influence how this namespace''s summaries are written, shared by every profile in the namespace. How you use them is up to you -- they steer the outcome, so try a phrasing and see how the summary comes out. Advisory: they steer the summary but never override or deny a profile''s own facts, and they do not affect recall. Null or empty means none are set, and summaries use the neutral default. A change reaches each summary the next time it is regenerated.' type: object title: SummarySettings description: A namespace's summary settings, shared by every profile in it. SummarySettingsPatch: properties: instructions: anyOf: - type: string maxLength: 2000 - type: 'null' title: Instructions description: Replace the namespace's summary instructions. Null or empty clears them and returns to the neutral default. Omit the field to leave the current instructions unchanged. type: object title: SummarySettingsPatch description: 'A partial update to a namespace''s summary settings. Only the fields present in the request are changed; the rest are left as they are. Sending `instructions: null` (or empty) clears the instructions.' SupportedEmbeddingLoaders: type: string enum: - default - intercom title: SupportedEmbeddingLoaders description: Supported types of custom document loaders for embeddings. SupportedEmbeddingModels: type: string enum: - thenlper/gte-large - intfloat/multilingual-e5-large title: SupportedEmbeddingModels description: Supported models to vectorize and embed documents. SuppressedRecipient: type: object properties: to: type: string format: email description: Suppressed recipient email address. reason: type: string description: Suppression reason returned by the recipient suppression service. scope: type: string description: Scope at which the suppression applies. override_allowed: type: boolean description: Whether an authorized send may override this suppression. required: - to - reason - scope - override_allowed SwitchSupervisorRoleRequest: type: object title: Switch Supervisor Role Request required: - role properties: role: description: The supervisor role to switch to. 'barge' allows speaking to both parties, 'whisper' allows speaking to caller only, 'monitor' allows listening only. type: string enum: - barge - whisper - monitor example: barge example: role: barge SystemMessage: type: object title: System Message description: Developer-provided instructions that the model should follow, regardless of messages sent by the user. properties: role: description: The role of the messages author, in this case `system`. type: string enum: - system content: description: The contents of the system message. type: string metadata: $ref: '#/components/schemas/MessageMetadata' required: - role - content example: role: system content: Get the user's favorite color T38Enabled: description: The flag to disable the T.38 protocol. type: boolean default: true TFPhoneNumber: title: PhoneNumber required: - phoneNumber type: object properties: phoneNumber: title: Phonenumber type: string description: A phone number TFVerificationRequest: title: VerificationRequest required: - businessName - corporateWebsite - businessAddr1 - businessCity - businessState - businessZip - businessContactFirstName - businessContactLastName - businessContactEmail - businessContactPhone - messageVolume - phoneNumbers - useCase - useCaseSummary - productionMessageContent - optInWorkflow - optInWorkflowImageURLs - additionalInformation type: object properties: businessName: title: Businessname type: string maxLength: 500 description: Name of the business; there are no specific formatting requirements example: Telnyx LLC corporateWebsite: title: Corporatewebsite type: string maxLength: 500 description: A URL, including the scheme, pointing to the corporate website example: http://example.com businessAddr1: title: Businessaddr1 type: string maxLength: 500 description: Line 1 of the business address example: 600 Congress Avenue businessAddr2: title: Businessaddr2 type: string maxLength: 500 description: Line 2 of the business address example: 14th Floor businessCity: title: Businesscity type: string maxLength: 500 description: The city of the business address; the first letter should be capitalized example: Austin businessState: title: Businessstate type: string maxLength: 500 description: The full name of the state (not the 2 letter code) of the business address; the first letter should be capitalized example: Texas businessZip: title: Businesszip type: string maxLength: 500 description: The ZIP code of the business address example: '78701' businessContactFirstName: title: Businesscontactfirstname type: string maxLength: 500 description: First name of the business contact; there are no specific requirements on formatting example: John businessContactLastName: title: Businesscontactlastname type: string maxLength: 500 description: Last name of the business contact; there are no specific requirements on formatting example: Doe businessContactEmail: title: Businesscontactemail type: string maxLength: 500 description: The email address of the business contact example: email@example.com businessContactPhone: title: Businesscontactphone type: string maxLength: 500 description: The phone number of the business contact in E.164 format example: '+18005550100' messageVolume: allOf: - $ref: '#/components/schemas/Volume' description: Estimated monthly volume of messages from the given phone numbers example: 100,000 phoneNumbers: title: Phonenumbers type: array minItems: 1 items: $ref: '#/components/schemas/TFPhoneNumber' description: The phone numbers to request the verification of example: - phoneNumber: '+18773554398' - phoneNumber: '+18773554399' useCase: allOf: - $ref: '#/components/schemas/UseCaseCategories' description: Machine-readable use-case for the phone numbers example: 2FA useCaseSummary: title: Usecasesummary type: string maxLength: 500 description: Human-readable summary of the desired use-case example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal productionMessageContent: title: Productionmessagecontent type: string maxLength: 1000 description: An example of a message that will be sent from the given phone numbers example: Your Telnyx OTP is XXXX optInWorkflow: title: Optinworkflow type: string maxLength: 500 description: Human-readable description of how end users will opt into receiving messages from the given phone numbers example: User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset optInWorkflowImageURLs: title: Optinworkflowimageurls minItems: 1 type: array items: $ref: '#/components/schemas/Url' description: Images showing the opt-in workflow example: - url: https://telnyx.com/sign-up - url: https://telnyx.com/company/data-privacy additionalInformation: title: Additionalinformation type: string maxLength: 500 description: Any additional information isvReseller: title: Isvreseller type: - string - 'null' maxLength: 500 description: ISV name webhookUrl: title: Webhookurl type: string maxLength: 500 description: URL that should receive webhooks relating to this verification request example: http://example-webhook.com businessRegistrationNumber: title: Businessregistrationnumber type: - string - 'null' maxLength: 500 description: Official business registration number (e.g., Employer Identification Number (EIN) in the U.S.). Required from January 2026. example: 12-3456789 businessRegistrationType: title: Businessregistrationtype type: - string - 'null' maxLength: 500 description: Type of business registration being provided. Required from January 2026. example: EIN businessRegistrationCountry: title: Businessregistrationcountry type: - string - 'null' maxLength: 2 pattern: ^[A-Z]{2}$ description: ISO 3166-1 alpha-2 country code of the issuing business authority. Must be exactly 2 letters. Automatically converted to uppercase. Required from January 2026. example: US doingBusinessAs: title: Doingbusinessas type: - string - 'null' maxLength: 500 description: Doing Business As (DBA) name if different from legal name example: Acme Services entityType: anyOf: - $ref: '#/components/schemas/toll-free-verification_EntityType' - type: 'null' description: Business entity classification. Must be one of the 5 valid enum values. optInConfirmationResponse: title: Optinconfirmationresponse type: - string - 'null' maxLength: 500 description: Message sent to users confirming their opt-in to receive messages example: You have successfully opted in to receive messages from Acme Corp helpMessageResponse: title: Helpmessageresponse type: - string - 'null' maxLength: 500 description: The message returned when users text 'HELP' example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com' privacyPolicyURL: title: Privacypolicyurl type: - string - 'null' maxLength: 500 description: URL pointing to the business's privacy policy. Plain string, no URL format validation. example: https://example.com/privacy termsAndConditionURL: title: Termsandconditionurl type: - string - 'null' maxLength: 500 description: URL pointing to the business's terms and conditions. Plain string, no URL format validation. example: https://example.com/terms ageGatedContent: title: Agegatedcontent type: boolean default: false description: Indicates if messaging content requires age gating (e.g., 18+). Defaults to false if not provided. optInKeywords: title: Optinkeywords type: - string - 'null' maxLength: 500 description: Keywords used to collect and process consumer opt-ins example: START, YES, SUBSCRIBE campaignVerifyAuthorizationToken: title: Campaignverifyauthorizationtoken type: - string - 'null' maxLength: 500 description: Campaign Verify Authorization Token required for Political use case submissions starting February 17, 2026. This token is validated by Zipwhip and must be provided for all Political use case verifications after the deadline. example: cv_token_abc123xyz description: The body of a tollfree verification request TFVerificationStatus: title: VerificationStatus enum: - Verified - Rejected - Waiting For Vendor - Waiting For Customer - Waiting For Telnyx - In Progress type: string description: Tollfree verification status TagsResponse: properties: tags: items: type: string type: array title: Tags type: object required: - tags title: TagsResponse TaskStatus: type: string enum: - pending - starting - running - completed - failed title: TaskStatus TaskStatusResponse: properties: data: type: object properties: task_id: type: string format: uuid title: Task ID task_name: type: string title: Task Name status: $ref: '#/components/schemas/BackgroundTaskStatus' created_at: type: string title: Created At finished_at: type: string title: Finished At type: object required: - data title: TaskStatusResponse TelcoDataAggregation: type: object properties: type: type: string description: Type of telco data lookup example: CNAM total_dips: type: integer description: Total number of lookups performed example: 3 total_cost: type: number description: Total cost for this aggregation example: 0.009 currency: type: string description: Currency code example: USD TelcoDataGetUsageReportByIdResponse: type: object properties: data: $ref: '#/components/schemas/TelcoDataUsageReportResponse' TelcoDataGetUsageReportsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/TelcoDataUsageReportResponse' meta: $ref: '#/components/schemas/standard_PaginationMeta' TelcoDataPostUsageReportResponse: type: object properties: data: $ref: '#/components/schemas/TelcoDataUsageReportResponse' TelcoDataUsageRecord: type: object properties: user_id: type: string format: uuid description: User ID example: d37bdd47-f301-42ec-b2ad-5a0465bfb632 aggregations: type: array description: List of aggregations by lookup type items: $ref: '#/components/schemas/TelcoDataAggregation' record_type: type: string description: Record type identifier example: TelcoDataUsageRecord TelcoDataUsageReportResponse: type: object properties: id: type: string format: uuid description: Unique identifier for the report example: 9783f4d7-0bfc-427a-9d6b-bc659ad16e5b start_date: type: string format: date description: Start date of the report period example: '2025-11-01' end_date: type: string format: date description: End date of the report period example: '2025-12-01' aggregation_type: type: string description: Type of aggregation used in the report example: ALL status: type: string description: Current status of the report example: COMPLETE report_url: type: string description: URL to download the complete report example: https://portal-cdrs-usage.s3.amazonaws.com/telco_data_usage_report_2025-12-02.csv created_at: type: string format: date-time description: Timestamp when the report was created example: '2025-12-02T20:20:57.196925Z' updated_at: type: string format: date-time description: Timestamp when the report was last updated example: '2025-12-02T20:21:08.237091Z' managed_accounts: type: array description: List of managed account IDs included in the report items: type: string example: [] result: type: array description: Array of usage records items: $ref: '#/components/schemas/TelcoDataUsageRecord' record_type: type: string description: Record type identifier example: TelcoDataUsageReport description: Telco data usage report response TelcoDataUsageRequest: type: object properties: startDate: type: string format: date description: Start date for the usage report example: '2025-02-10' endDate: type: string format: date description: End date for the usage report example: '2025-02-10' aggregationType: type: string description: Type of aggregation for the report enum: - ALL - BY_ORGANIZATION_MEMBER example: ALL managedAccounts: type: array description: List of managed accounts to include in the report items: type: string example: - f47ac10b-58cc-4372-a567-0e02b2c3d479 - 6ba7b810-9dad-11d1-80b4-00c04fd430c8 TelephonyCredential: type: object title: On-demand Credential properties: id: type: string description: Identifies the resource. example: c215ade3-0d39-418e-94be-c5f780760199 record_type: type: string description: Identifies the type of the resource. example: credential name: type: string resource_id: type: string description: Identifies the resource this credential is associated with. example: connection:1234567890 expired: type: boolean description: Defaults to false sip_username: type: string description: The randomly generated SIP username for the credential. example: gencrednCvHU5IYpSBPPsXI2iQsDX sip_password: type: string description: The randomly generated SIP password for the credential. example: a92dbcfb60184a8cb330b0acb2f7617b created_at: type: string description: ISO-8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' user_id: type: string description: Identifies the user this credential is associated with. example: user-id updated_at: type: string description: ISO-8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' expires_at: type: string description: ISO-8601 formatted date indicating when the resource will expire. example: '2018-02-02T22:25:27.521Z' example: id: c215ade3-0d39-418e-94be-c5f780760199 record_type: credential name: '2020-06-18 21:32:38.917732Z' expired: false user_id: user-id resource_id: connection:804252963366242252 sip_password: a92dbcfb60184a8cb330b0acb2f7617b sip_username: gencrednCvHU5IYpSBPPsXI2iQsDX created_at: '2020-06-18T21:32:38' expires_at: '2042-06-18T21:32:38' updated_at: '2020-06-18T21:32:38.000Z' TelephonyCredentialCreateRequest: type: object title: TelephonyCredentialCreateRequest required: - connection_id properties: name: type: string tag: type: string description: Tags a credential. A single tag can hold at maximum 1000 credentials. example: some_tag connection_id: type: string description: Identifies the Credential Connection this credential is associated with. example: '1234567890' expires_at: type: string description: ISO-8601 formatted date indicating when the credential will expire. example: '2018-02-02T22:25:27.521Z' example: name: My-new-credential connection_id: '1234567890' TelephonyCredentialUpdateRequest: type: object title: TelephonyCredentialUpdateRequest properties: name: type: string tag: type: string description: Tags a credential. A single tag can hold at maximum 1000 credentials. example: some_tag connection_id: type: string description: Identifies the Credential Connection this credential is associated with. example: '987654321' expires_at: type: string description: ISO-8601 formatted date indicating when the credential will expire. example: '2018-02-02T22:25:27.521Z' example: name: My-new-updated-credential connection_id: '987654321' TelephonySettings: properties: default_texml_app_id: type: string description: Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation. supports_unauthenticated_web_calls: type: boolean description: When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled. noise_suppression: type: string enum: - aicoustics - krisp - deepfilternet - disabled description: The noise suppression engine to use. 'aicoustics' is STT-optimized and recommended for AI assistants (configure through noise_suppression_config). Use 'disabled' to turn off noise suppression. noise_suppression_config: type: object description: 'Configuration for noise suppression. Applicable fields depend on the engine: ''attenuation_limit'' and ''mode'' only when noise_suppression is ''deepfilternet''; ''family'', ''size'' and ''enhancement_level'' only when noise_suppression is ''aicoustics''.' properties: attenuation_limit: type: integer minimum: 0 maximum: 100 default: 100 description: 'Attenuation limit for noise suppression. Range: 0-100. Only applicable when noise_suppression is ''deepfilternet''.' mode: type: string enum: - advanced description: Mode for noise suppression configuration. Only applicable when noise_suppression is 'deepfilternet'. family: type: string enum: - quail description: AiCoustics model family optimized for Voice AI and STT. Only applicable when noise_suppression is 'aicoustics'. size: type: string enum: - vf - vf_2_0_l description: AiCoustics model size. 'vf' tracks the latest model release; 'vf_2_0_l' is pinned to version 2.0 for consistent, predictable behavior. Only applicable when noise_suppression is 'aicoustics'. enhancement_level: type: number minimum: 0 maximum: 1 default: 0.8 description: 'AiCoustics enhancement intensity. Range: 0-1. Only applicable when noise_suppression is ''aicoustics''.' time_limit_secs: type: integer minimum: 30 maximum: 14400 default: 1800 description: Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. Stopping the assistant does not itself hang up the call, and what happens next depends on how the assistant is running. On Call Control (ai_assistant_start) the call leg stays connected and continues to be billed until it is hung up (for example with the Hangup call command) or until the call ends for another reason. On TeXML, the assistant's `` instruction ends; in the default TeXML setup for assistants no instructions follow it, so the call is hung up. Your application receives a call.conversation.ended webhook when the assistant stops. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative). user_idle_timeout_secs: type: integer minimum: 10 maximum: 14400 description: Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. Stopping the assistant does not itself hang up the call, and what happens next depends on how the assistant is running. On Call Control (ai_assistant_start) the call leg stays connected and continues to be billed until it is hung up (for example with the Hangup call command) or until the call ends for another reason. On TeXML, the assistant's `` instruction ends; in the default TeXML setup for assistants no instructions follow it, so the call is hung up. Your application receives a call.conversation.ended webhook when the assistant stops. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative). user_idle_reply_secs: type: integer minimum: 0 default: 10 description: Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely. fallback_destination: type: string description: 'Destination number or SIP URI to transfer the caller to when the AI conversation ends abnormally, for example because of an assistant-side error, so the caller is not left in dead air. This only fires for abnormal ends: it does not fire when the conversation ends on purpose (the caller hung up, the assistant completed normally, the caller hung up after a relay handoff, or voicemail was detected), and it does not fire when the assistant already transferred or bridged the call.' send_message_history_updates: type: boolean description: 'Whether the assistant sends a `call.ai_gather.message_history_updated` webhook with the full message history every time the conversation history changes. Leave unset to inherit the `send_message_history_updates` value from the `ai_assistant_start` or `gather_using_ai` command that started the conversation. Setting it here is authoritative: `true` turns the webhooks on even when the start command did not request them, and `false` turns them off even when it did. Messages exchanged during a private warm transfer acceptance phase are never included.' conversation_ended_full_history: type: boolean default: false description: 'When enabled, the `messages` array of the `call.conversation.ended` webhook contains the full conversation history in order: user and assistant turns, assistant tool calls (`tool_calls`), tool results (`role: tool` with `tool_call_id`), and informational `system` and `developer` entries. The assistant''s instructions are never included. When disabled, `messages` contains only user and assistant text turns.' voicemail_detection: type: object description: 'Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.' properties: on_voicemail_detected: type: object description: Action to take when voicemail is detected. properties: action: type: string enum: - stop_assistant - leave_message_and_stop_assistant - continue_assistant description: The action to take when voicemail is detected. voicemail_message: type: object description: Configuration for the voicemail message to leave. Only applicable when action is 'leave_message_and_stop_assistant'. properties: type: type: string enum: - prompt - message description: The type of voicemail message. Use 'prompt' to have the assistant generate a message based on a prompt, or 'message' to leave a specific message. prompt: type: string description: The prompt to use for generating the voicemail message. Only applicable when type is 'prompt'. message: type: string description: The specific message to leave as voicemail. Only applicable when type is 'message'. disable_dtmf: type: boolean default: false description: Disable inbound DTMF for the entire call. Must be set to true if a 'pay' tool is configured anywhere on the assistant — on the main tool array or on any workflow node — enforced at write time. recording_settings: type: object description: Configuration for call recording format and channel settings. properties: enabled: type: boolean default: true description: Whether call recording is enabled. When set to false, calls will not be recorded regardless of other recording configuration. channels: type: string enum: - single - dual default: dual description: The number of channels for the recording. 'single' for mono, 'dual' for stereo. format: type: string enum: - wav - mp3 default: mp3 description: The format of the recording file. stop_on_conversation_end: type: boolean default: false description: When enabled, the call recording will stop when the conversation ends (for example, when the assistant hangs up or the call is transferred). When disabled, recording continues until the call itself ends. type: object title: TelephonySettings TelnyxAgentData: properties: run_id: type: string title: Run Id telnyx_agent_id: type: string title: Telnyx Agent Id created_at: type: string format: date-time title: Created At type: object required: - run_id - telnyx_agent_id - created_at title: TelnyxAgentData TelnyxAgentResponse: properties: data: $ref: '#/components/schemas/TelnyxAgentData' type: object required: - data title: TelnyxAgentResponse TelnyxAgentsListResponse: properties: data: items: $ref: '#/components/schemas/TelnyxAgentData' type: array title: Data type: object required: - data title: TelnyxAgentsListResponse TelnyxAvatarSettings: title: TelnyxAvatarSettings description: '**Beta:** Configuration for the Telnyx open-source avatar provider. Use a stock avatar or an organization-owned custom avatar returned by the Avatars API. Discover the available stock catalog with GET /v2/ai/avatars and filter[avatar_type]=stock; follow meta.total_pages to load every page.' type: object additionalProperties: false properties: provider: type: string const: telnyx description: Selects the Telnyx open-source avatar provider. avatar_id: $ref: '#/components/schemas/AvatarId' description: The Telnyx stock avatar or organization-owned custom avatar to render. background_id: type: string enum: - office - studio - reception - illustrated_workspace description: The background to render. model: type: string enum: - foxtrot-1 description: Required avatar model identifier, separate from `avatar_id`. The supported value is `foxtrot-1`. Omission, null, and unsupported model identifiers are rejected. required: - provider - avatar_id - background_id - model example: provider: telnyx avatar_id: elena background_id: office model: foxtrot-1 TelnyxBrand: title: TelnyxBrand required: - entityType - displayName - country - email - brandRelationship - vertical type: object properties: entityType: allOf: - $ref: '#/components/schemas/EntityType' description: Entity type behind the brand. This is the form of business establishment. cspId: title: Cspid type: string description: Unique identifier assigned to the csp by the registry. brandId: title: Brandid type: string description: Unique identifier assigned to the brand. example: 4b20017f-8da9-a992-a6c0-683072fb7729 tcrBrandId: title: TcrBrandid type: string description: Unique identifier assigned to the brand by the registry. example: BBRAND1 displayName: title: Displayname maxLength: 100 type: string description: Display or marketing name of the brand. example: ABC Mobile companyName: title: Companyname maxLength: 100 type: string description: (Required for Non-profit/private/public) Legal company name. example: ABC Inc. firstName: title: Firstname maxLength: 100 type: string description: First name of business contact. example: John lastName: title: Lastname maxLength: 100 type: string description: Last name of business contact. example: Smith ein: title: Ein maxLength: 20 type: string description: (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S. example: '111111111' phone: title: Phone maxLength: 20 type: string description: Valid phone number in e.164 international format. example: '+12024567890' street: title: Street maxLength: 100 type: string description: Street number and name. example: '123' city: title: City maxLength: 100 type: string description: City name example: New York state: title: State maxLength: 20 type: string description: State. Must be 2 letters code for United States. example: NY postalCode: title: Postalcode maxLength: 10 type: string description: Postal codes. Use 5 digit zipcode for United States example: '10001' country: title: Country maxLength: 2 type: string description: 'ISO2 2 characters country code. Example: US - United States' example: US email: title: Email maxLength: 100 type: string description: Valid email address of brand support contact. stockSymbol: title: Stocksymbol maxLength: 10 type: string description: (Required for public company) stock symbol. example: ABC stockExchange: allOf: - $ref: '#/components/schemas/StockExchange' description: (Required for public company) stock exchange. example: NASDAQ ipAddress: title: Ipaddress maxLength: 50 type: string description: IP address of the browser requesting to create brand identity. website: title: Website maxLength: 100 type: string description: Brand website URL. example: http://www.abcmobile.com brandRelationship: allOf: - $ref: '#/components/schemas/BrandRelationship' description: Brand relationship to the CSP vertical: title: Vertical maxLength: 50 type: string description: Vertical or industry segment of the brand. altBusinessId: title: Altbusinessid maxLength: 50 type: string description: Alternate business identifier such as DUNS, LEI, or GIIN altBusinessIdType: $ref: '#/components/schemas/AltBusinessIdType' universalEin: title: Universalein type: string description: Universal EIN of Brand, Read Only. referenceId: title: Referenceid type: string description: Unique identifier Telnyx assigned to the brand - the brandId identityStatus: $ref: '#/components/schemas/BrandIdentityStatus' optionalAttributes: $ref: '#/components/schemas/BrandOptionalAttributes' mock: title: Mock type: boolean description: Mock brand for testing purposes default: false mobilePhone: title: Mobilephone maxLength: 20 type: string description: Valid mobile phone number in e.164 international format. example: '+12024567890' isReseller: title: Isreseller type: boolean description: Indicates whether this brand is known to be a reseller default: false webhookURL: title: WebhookURL type: string description: Webhook to which brand status updates are sent. example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93 businessContactEmail: title: BusinessContactEmail type: string description: 'Business contact email. Required if `entityType` is `PUBLIC_PROFIT`.' example: name@example.com webhookFailoverURL: title: WebhookFailoverURL type: string description: Failover webhook to which brand status updates are sent. createdAt: type: string description: Date and time that the brand was created at. example: '2021-03-08T17:57:48.801186' updatedAt: type: string description: Date and time that the brand was last updated at. example: '2021-03-08T17:57:48.801186' status: title: status description: Status of the brand enum: - OK - REGISTRATION_PENDING - REGISTRATION_FAILED type: string failureReasons: title: failureReasons description: Failure reasons for brand type: string description: Telnyx-specific extensions to The Campaign Registry's `Brand` type TelnyxBrandWithCampaignsCount: allOf: - $ref: '#/components/schemas/TelnyxBrand' - type: object title: TelnyxBrandWithCampaignsCount properties: assignedCampaignsCount: title: AssignedCampaignsCount description: Number of campaigns associated with the brand type: number example: 3 TelnyxCampaignWithAssignedCount_CSP: title: TelnyxCampaignWithAssignedCount_CSP type: object properties: ageGated: title: Agegated type: boolean description: Age gated content in campaign. autoRenewal: title: Autorenewal type: boolean description: Campaign subscription auto-renewal status. billedDate: title: Billeddate type: string description: Campaign recent billed date. brandId: title: Brandid type: string description: Unique identifier assigned to the brand. example: d2ca9d69-641b-4131-83fa-5d0744f4c8a9 brandDisplayName: title: Branddisplayname description: Display or marketing name of the brand. example: ABC Mobile type: string campaignId: title: Campaignid type: string description: Unique identifier for a campaign. example: 823d6b1a-6ed6-41a3-9c50-c8ff41b682ba tcrBrandId: title: TcrBrandid type: string description: Unique identifier assigned to the brand by the registry. example: BBRAND1 tcrCampaignId: title: TcrCampaignid type: string description: Unique identifier assigned to the campaign by the registry. example: CCAMP1 createDate: title: Createdate type: string description: Unix timestamp when campaign was created. cspId: title: Cspid type: string description: Alphanumeric identifier of the CSP associated with this campaign. description: title: Description type: string description: Summary description of this campaign. directLending: title: Directlending type: boolean embeddedLink: title: Embeddedlink type: boolean description: Does message generated by the campaign include URL link in SMS? embeddedPhone: title: Embeddedphone type: boolean description: Does message generated by the campaign include phone number in SMS? helpKeywords: title: Helpkeywords type: string description: Subscriber help keywords. Multiple keywords are comma separated without space. helpMessage: title: Helpmessage type: string description: Help message of the campaign. messageFlow: title: Messageflow type: string description: Message flow description. mock: title: Mock type: boolean description: Campaign created from mock brand. Mocked campaign cannot be shared with an upstream CNP. nextRenewalOrExpirationDate: title: Nextrenewalorexpirationdate type: string description: When the campaign would be due for its next renew/bill date. numberPool: title: Numberpool type: boolean description: Does campaign utilize pool of phone numbers? optinKeywords: title: Optinkeywords type: string description: Subscriber opt-in keywords. Multiple keywords are comma separated without space. optinMessage: title: Optinmessage type: string description: Subscriber opt-in message. optoutKeywords: title: Optoutkeywords type: string description: Subscriber opt-out keywords. Multiple keywords are comma separated without space. optoutMessage: title: Optoutmessage type: string description: Subscriber opt-out message. referenceId: title: Referenceid type: string description: Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns. Can be used to prevent duplicate campaign registrations. resellerId: title: Resellerid type: string description: Alphanumeric identifier of the reseller that you want to associate with this campaign. sample1: title: Sample1 type: string description: Message sample. Some campaign tiers require 1 or more message samples. sample2: title: Sample2 type: string description: Message sample. Some campaign tiers require 2 or more message samples. sample3: title: Sample3 type: string description: Message sample. Some campaign tiers require 3 or more message samples. sample4: title: Sample4 type: string description: Message sample. Some campaign tiers require 4 or more message samples. sample5: title: Sample5 type: string description: Message sample. Some campaign tiers require 5 or more message samples. status: title: Status type: string description: 'Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE status. ' subUsecases: title: Subusecases uniqueItems: true type: array items: type: string description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases subscriberHelp: title: Subscriberhelp type: boolean description: Does campaign responds to help keyword(s)? subscriberOptin: title: Subscriberoptin type: boolean description: Does campaign require subscriber to opt-in before SMS is sent to subscriber? subscriberOptout: title: Subscriberoptout type: boolean description: Does campaign support subscriber opt-out keyword(s)? termsAndConditions: title: Termsandconditions type: boolean description: Is terms & conditions accepted? usecase: title: Usecase type: string description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand. vertical: title: Vertical type: string description: 'Business/industry segment of this campaign (Deprecated). Must be of defined valid types. Use `/registry/enum/vertical` operation to retrieve verticals available for given brand, vertical combination. This field is deprecated.' deprecated: true webhookURL: title: WebhookURL type: string description: Webhook to which campaign status updates are sent. example: https://example.com/webhook webhookFailoverURL: title: WebhookFailoverURL type: string description: Failover webhook to which campaign status updates are sent. example: https://example.com/failover-webhook isTMobileRegistered: title: IsTMobileRegistered type: boolean description: Indicates whether the campaign is registered with T-Mobile. isTMobileSuspended: title: isTMobileSuspended type: boolean description: Indicates whether the campaign is suspended with T-Mobile. isTMobileNumberPoolingEnabled: title: isTMobileNumberPoolingEnabled type: boolean description: Indicates whether the campaign has a T-Mobile number pool ID associated with it. failureReasons: title: failureReasons description: Failure reasons if campaign submission failed type: string submissionStatus: title: submissionStatus description: Campaign submission status enum: - CREATED - FAILED - PENDING type: string campaignStatus: title: campaignStatus description: Campaign status example: TCR_ACCEPTED enum: - TCR_PENDING - TCR_SUSPENDED - TCR_EXPIRED - TCR_ACCEPTED - TCR_FAILED - TELNYX_ACCEPTED - TELNYX_FAILED - MNO_PENDING - MNO_ACCEPTED - MNO_REJECTED - MNO_PROVISIONED - MNO_PROVISIONING_FAILED type: string privacyPolicyLink: title: PrivacyPolicyLink type: string description: Link to the campaign's privacy policy. termsAndConditionsLink: title: TermsAndConditionsLink type: string description: Link to the campaign's terms and conditions. embeddedLinkSample: title: EmbeddedLinkSample type: string description: Sample of an embedded link that will be sent to subscribers. assignedPhoneNumbersCount: title: AssignedPhoneNumbersCount description: Number of phone numbers associated with the campaign type: number example: 3 TelnyxCampaign_CSP: title: TelnyxCampaign_CSP required: - brandId - campaignId - cspId - description - mock - subUsecases - termsAndConditions - usecase type: object properties: ageGated: title: Agegated type: boolean description: Age gated content in campaign. autoRenewal: title: Autorenewal type: boolean description: Campaign subscription auto-renewal status. billedDate: title: Billeddate type: string description: Campaign recent billed date. brandId: title: Brandid type: string description: Unique identifier assigned to the brand. example: d2ca9d69-641b-4131-83fa-5d0744f4c8a9 brandDisplayName: title: Branddisplayname description: Display or marketing name of the brand. example: ABC Mobile type: string campaignId: title: Campaignid type: string description: Unique identifier for a campaign. example: 823d6b1a-6ed6-41a3-9c50-c8ff41b682ba tcrBrandId: title: TcrBrandid type: string description: Unique identifier assigned to the brand by the registry. example: BBRAND1 tcrCampaignId: title: TcrCampaignid type: string description: Unique identifier assigned to the campaign by the registry. example: CCAMP1 createDate: title: Createdate type: string description: Unix timestamp when campaign was created. cspId: title: Cspid type: string description: Alphanumeric identifier of the CSP associated with this campaign. description: title: Description type: string description: Summary description of this campaign. directLending: title: Directlending type: boolean embeddedLink: title: Embeddedlink type: boolean description: Does message generated by the campaign include URL link in SMS? embeddedPhone: title: Embeddedphone type: boolean description: Does message generated by the campaign include phone number in SMS? helpKeywords: title: Helpkeywords type: string description: Subscriber help keywords. Multiple keywords are comma separated without space. helpMessage: title: Helpmessage type: string description: Help message of the campaign. messageFlow: title: Messageflow type: string description: Message flow description. mock: title: Mock type: boolean description: Campaign created from mock brand. Mocked campaign cannot be shared with an upstream CNP. nextRenewalOrExpirationDate: title: Nextrenewalorexpirationdate type: string description: When the campaign would be due for its next renew/bill date. numberPool: title: Numberpool type: boolean description: Does campaign utilize pool of phone numbers? optinKeywords: title: Optinkeywords type: string description: Subscriber opt-in keywords. Multiple keywords are comma separated without space. optinMessage: title: Optinmessage type: string description: Subscriber opt-in message. optoutKeywords: title: Optoutkeywords type: string description: Subscriber opt-out keywords. Multiple keywords are comma separated without space. optoutMessage: title: Optoutmessage type: string description: Subscriber opt-out message. referenceId: title: Referenceid type: string description: Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns. Can be used to prevent duplicate campaign registrations. resellerId: title: Resellerid type: string description: Alphanumeric identifier of the reseller that you want to associate with this campaign. sample1: title: Sample1 type: string description: Message sample. Some campaign tiers require 1 or more message samples. sample2: title: Sample2 type: string description: Message sample. Some campaign tiers require 2 or more message samples. sample3: title: Sample3 type: string description: Message sample. Some campaign tiers require 3 or more message samples. sample4: title: Sample4 type: string description: Message sample. Some campaign tiers require 4 or more message samples. sample5: title: Sample5 type: string description: Message sample. Some campaign tiers require 5 or more message samples. status: title: Status type: string description: 'Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE status. ' subUsecases: title: Subusecases uniqueItems: true type: array items: type: string description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases subscriberHelp: title: Subscriberhelp type: boolean description: Does campaign responds to help keyword(s)? subscriberOptin: title: Subscriberoptin type: boolean description: Does campaign require subscriber to opt-in before SMS is sent to subscriber? subscriberOptout: title: Subscriberoptout type: boolean description: Does campaign support subscriber opt-out keyword(s)? termsAndConditions: title: Termsandconditions type: boolean description: Is terms & conditions accepted? usecase: title: Usecase type: string description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand. vertical: title: Vertical type: string description: 'Business/industry segment of this campaign (Deprecated). Must be of defined valid types. Use `/registry/enum/vertical` operation to retrieve verticals available for given brand, vertical combination. This field is deprecated.' deprecated: true webhookURL: title: WebhookURL type: string description: Webhook to which campaign status updates are sent. example: https://example.com/webhook webhookFailoverURL: title: WebhookFailoverURL type: string description: Failover webhook to which campaign status updates are sent. example: https://example.com/failover-webhook isTMobileRegistered: title: IsTMobileRegistered type: boolean description: Indicates whether the campaign is registered with T-Mobile. isTMobileSuspended: title: isTMobileSuspended type: boolean description: Indicates whether the campaign is suspended with T-Mobile. isTMobileNumberPoolingEnabled: title: isTMobileNumberPoolingEnabled type: boolean description: Indicates whether the campaign has a T-Mobile number pool ID associated with it. failureReasons: title: failureReasons description: Failure reasons if campaign submission failed type: string submissionStatus: title: submissionStatus description: Campaign submission status enum: - CREATED - FAILED - PENDING type: string campaignStatus: title: campaignStatus description: Campaign status example: TCR_ACCEPTED enum: - TCR_PENDING - TCR_SUSPENDED - TCR_EXPIRED - TCR_ACCEPTED - TCR_FAILED - TELNYX_ACCEPTED - TELNYX_FAILED - MNO_PENDING - MNO_ACCEPTED - MNO_REJECTED - MNO_PROVISIONED - MNO_PROVISIONING_FAILED type: string privacyPolicyLink: title: PrivacyPolicyLink type: string description: Link to the campaign's privacy policy. termsAndConditionsLink: title: TermsAndConditionsLink type: string description: Link to the campaign's terms and conditions. embeddedLinkSample: title: EmbeddedLinkSample type: string description: Sample of an embedded link that will be sent to subscribers. description: Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or expired(non-reversible), campaign data is deleted from the OSR service. Most attributes of campaignare immutable, including **usecase**, **vertical**, **brandId** and **cspId**. TelnyxConversationChannel: type: string enum: - phone_call - web_call - sms_chat - web_chat title: TelnyxConversationChannel TelnyxDesignClone: type: object description: Create a voice clone from a voice design using the Telnyx provider. required: - name - voice_design_id - language - gender properties: name: type: string minLength: 1 maxLength: 255 description: Name for the voice clone. voice_design_id: type: string format: uuid description: UUID of the source voice design to clone. language: type: string description: ISO 639-1 language code for the clone. Supports the combined Telnyx language set. gender: type: string enum: - male - female - neutral description: Gender of the voice clone. provider: type: string enum: - telnyx - Telnyx default: telnyx description: Voice synthesis provider. Defaults to `telnyx`. example: name: clone-narrator voice_design_id: 550e8400-e29b-41d4-a716-446655440000 language: en gender: male provider: telnyx TelnyxDownstreamCampaign: title: TelnyxDownstreamCampaign required: - tcrBrandId - tcrCampaignId type: object properties: ageGated: title: AgeGated type: boolean description: Age gated content in campaign. assignedPhoneNumbersCount: title: AssignedPhoneNumbersCount description: Number of phone numbers associated with the campaign type: number example: 3 brandDisplayName: title: Branddisplayname description: Display or marketing name of the brand. example: ABC Mobile type: string campaignStatus: title: campaignStatus description: Campaign status example: TCR_ACCEPTED enum: - TCR_PENDING - TCR_SUSPENDED - TCR_EXPIRED - TCR_ACCEPTED - TCR_FAILED - TELNYX_ACCEPTED - TELNYX_FAILED - MNO_PENDING - MNO_ACCEPTED - MNO_REJECTED - MNO_PROVISIONED - MNO_PROVISIONING_FAILED type: string description: title: Description type: string description: Summary description of this campaign. directLending: title: Directlending type: boolean description: Direct lending or loan arrangement. embeddedLink: title: Embeddedlink type: boolean description: Does message generated by the campaign include URL link in SMS? embeddedLinkSample: title: EmbeddedLinkSample type: string description: Sample of an embedded link that will be sent to subscribers. embeddedPhone: title: Embeddedphone type: boolean description: Does message generated by the campaign include phone number in SMS? failureReasons: title: failureReasons description: Failure reasons if campaign submission failed type: string helpKeywords: title: Helpkeywords type: string description: Subscriber help keywords. Multiple keywords are comma separated without space. helpMessage: title: Helpmessage type: string description: Help message of the campaign. isNumberPoolingEnabled: title: isNumberPoolingEnabled type: boolean description: Indicates whether the campaign has a T-Mobile number pool ID associated with it. messageFlow: title: Messageflow type: string description: Message flow description. numberPool: title: Numberpool type: boolean description: Does campaign utilize pool of phone numbers? optinKeywords: title: Optinkeywords type: string description: Subscriber opt-in keywords. Multiple keywords are comma separated without space. optinMessage: title: Optinmessage type: string description: Subscriber opt-in message. optoutKeywords: title: Optoutkeywords type: string description: Subscriber opt-out keywords. Multiple keywords are comma separated without space. optoutMessage: title: Optoutmessage type: string description: Subscriber opt-out message. privacyPolicyLink: title: PrivacyPolicyLink type: string description: Link to the campaign's privacy policy. usecase: title: Usecase type: string description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand. sample1: title: Sample1 type: string description: Message sample. Some campaign tiers require 1 or more message samples. sample2: title: Sample2 type: string description: Message sample. Some campaign tiers require 2 or more message samples. sample3: title: Sample3 type: string description: Message sample. Some campaign tiers require 3 or more message samples. sample4: title: Sample4 type: string description: Message sample. Some campaign tiers require 4 or more message samples. sample5: title: Sample5 type: string description: Message sample. Some campaign tiers require 5 or more message samples. subUsecases: title: Subusecases uniqueItems: true type: array items: type: string description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases subscriberOptin: title: Subscriberoptin type: boolean description: Does campaign require subscriber to opt-in before SMS is sent to subscriber? subscriberOptout: title: Subscriberoptout type: boolean description: Does campaign support subscriber opt-out keyword(s)? tcrBrandId: title: TcrBrandid type: string description: Unique identifier assigned to the brand by the registry. example: BBRAND1 tcrCampaignId: title: TcrCampaignid type: string description: Unique identifier assigned to the campaign by the registry. example: CCAMP1 termsAndConditions: title: Termsandconditions type: boolean description: Is terms & conditions accepted? termsAndConditionsLink: title: TermsAndConditionsLink type: string description: Link to the campaign's terms and conditions. webhookURL: title: WebhookURL type: string description: Webhook to which campaign status updates are sent. example: https://example.com/webhook webhookFailoverURL: title: WebhookFailoverURL type: string description: Failover webhook to which campaign status updates are sent. example: https://example.com/failover-webhook createdAt: type: string description: Date and time that the brand was created at. example: '2021-03-08T17:57:48.801186' updatedAt: type: string description: Date and time that the brand was last updated at. example: '2021-03-08T17:57:48.801186' description: Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or expired(non-reversible), campaign data is deleted from the OSR service. TelnyxDownstreamCampaignRecordSet: title: TelnyxDownstreamCampaignRecordSet type: object properties: records: title: Records type: array items: $ref: '#/components/schemas/TelnyxDownstreamCampaign' page: title: Page type: integer totalRecords: title: Totalrecords type: integer TelnyxError: type: object properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: type: string meta: type: object properties: url: type: string TelnyxErrors: type: object properties: errors: type: array items: $ref: '#/components/schemas/TelnyxError' TelnyxProviderParams: type: object description: Telnyx provider-specific parameters. For the `Ultra` model, use `voice_speed`, `volume`, and `emotion`. `Bayan` and `Sukhan` don't use `temperature`, `volume`, or `emotion`, 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 — 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 — requests outside that range are rejected by the synthesis engine. `KokoroTTS`, `Qwen3TTS`, `Bayan`, and `Sukhan` voices accept the field but do not apply it. minimum: 0.0 maximum: 2.0 default: 1.0 emotion: type: string description: Emotion control for the Ultra model. Adjusts the emotional tone of the synthesized speech. enum: - neutral - happy - sad - angry - fearful - disgusted - surprised TelnyxQwen3TTSClone: type: object description: Upload-based voice clone using the Telnyx Qwen3TTS model (default). required: - audio_file - name - language - gender - provider properties: audio_file: type: string format: binary description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality, provide 5–10 seconds of clear, uninterrupted speech. Maximum size: 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 — 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. Provides comprehensive information about a test execution including status, 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. Returns a list of distinct test suite names that can be used for filtering and organizing tests.' TestWebhookToolRequest: properties: arguments: type: object title: Arguments description: Key-value arguments to use for the webhook test additionalProperties: true dynamic_variables: type: object title: Dynamic Variables description: Key-value dynamic variables to use for the webhook test additionalProperties: true type: object title: TestWebhookToolRequest description: Request model for testing a webhook tool TestWebhookToolResponse: properties: success: type: boolean title: Success status_code: type: integer title: Status Code content_type: type: string title: Content Type response: type: string title: Response request: type: object title: Request additionalProperties: true type: object required: - success - status_code - content_type - response - request title: TestWebhookToolResponse description: Response model for webhook tool test results TestWebhookToolResponseData: properties: data: $ref: '#/components/schemas/TestWebhookToolResponse' type: object required: - data title: TestWebhookToolResponseData description: Response model for webhook tool test results TexmlAiGatherWebhookSchema: type: object title: TeXML AI Gather Webhook description: Webhook sent to the action URL when AI Gather completes. Contains standard call parameters plus AI conversation results in base64-encoded JSON format. properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: f5586561-8ff0-4291-a51b-c7dfe4139ff9 Base64MessageHistory: type: string description: Base64-encoded JSON array of message history (conditional). example: W3sicm9sZSI6InVzZXIiLCJjb250ZW50IjoiSGVsbG8ifV0= Base64Result: type: string description: Base64-encoded JSON object containing AI gather result (conditional). example: eyJzdGF0dXMiOiJ2YWxpZCIsInJlc3VsdCI6eyJ0ZXh0IjoiSSB3b3VsZCBsaWtlIHRvIHNjaGVkdWxlIGFuIGFwcG9pbnRtZW50In19 CallSid: type: string description: The unique identifier of the call (call_control_id). example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ ConnectionId: type: string description: The unique identifier of the connection. example: '1234567890' From: type: string description: The phone number or SIP address of the caller. example: '+35319605860' Status: type: string description: The status of the AI gather operation. example: valid To: type: string description: The phone number or SIP address that was called. example: '+13129457420' required: - AccountSid - CallSid - CallSidLegacy - From - To - ConnectionId - Status TexmlApplication: type: object title: Texml Application properties: id: $ref: '#/components/schemas/IntId' record_type: type: string description: Identifies the type of the resource. example: texml_application friendly_name: $ref: '#/components/schemas/ApplicationName' active: $ref: '#/components/schemas/ConnectionActive' anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' dtmf_type: $ref: '#/components/schemas/DtmfType' first_command_timeout: $ref: '#/components/schemas/FirstCommandTimeout' first_command_timeout_secs: $ref: '#/components/schemas/FirstCommandTimeoutSecs' voice_url: type: string description: URL to which Telnyx will deliver your XML Translator webhooks. format: uri example: https://example.com voice_fallback_url: type: string description: URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your voice_url. default: null format: uri example: https://fallback.example.com call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this TeXML Application. default: false voice_method: type: string description: HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or 'post'. enum: - get - post default: post example: get status_callback: type: string description: URL for Telnyx to send requests to containing information about call progress events. default: null format: uri example: https://example.com status_callback_method: type: string description: HTTP request method Telnyx should use when requesting the status_callback URL. enum: - get - post default: post example: get tags: type: array items: type: string description: Tags associated with the Texml Application. example: - tag1 - tag2 inbound: type: object properties: channel_limit: type: integer description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. default: null example: 10 shaken_stir_enabled: type: boolean description: When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls. default: false example: false sip_subdomain: type: string description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric value. 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’ll be added to sip headers. example: true type: boolean enum: - true - false Secure: description: Controls whether to encrypt media sent to your SRS using SRTP and TLS. When set you need to configure SRS port in your connector to 5061. example: true type: boolean enum: - true - false SessionTimeoutSecs: description: Sets `Session-Expires` header to the INVITE. A reinvite is sent every half the value set. Usefull for session keep alive. Minimum value is 90, set to 0 to disable. example: 900 type: integer default: 1800 SipTransport: description: Specifies SIP transport protocol. example: tcp enum: - udp - tcp - tls type: string default: udp StatusCallback: description: URL destination for Telnyx to send status callback events to for the siprec session. example: https://www.example.com/callback type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback`. example: GET type: string enum: - GET - POST TexmlCreateSiprecSessionResponseBody: type: object title: Create Siprec Session Response properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b call_sid: type: string description: The id of the call the resource belongs to. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ sid: description: The SID of the siprec session. example: 61bf923e-5e4d-4595-a110-56190ea18123 type: string date_created: description: The date and time the siprec session was created. example: Fri, 11 Aug 2023 19:12:11 +0000 type: string date_updated: description: The date and time the siprec session was last updated. example: Fri, 11 Aug 2023 19:12:11 +0000 type: string start_time: description: The date and time the siprec session was started. example: Fri, 11 Aug 2023 19:12:11 +0000 type: string status: description: The status of the siprec session. example: in-progress type: string enum: - in-progress - stopped track: description: The track used for the siprec session. example: both_tracks type: string enum: - both_tracks - inbound_track - outbound_track uri: description: The URI of the siprec session. example: https://api.telnyx.com/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18123/Calls/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-ai/Siprec/61bf923e-5e4d-4595-a110-56190ea18123 type: string error_code: description: The error code of the siprec session. type: string TexmlErrorCode: type: - string - 'null' example: null TexmlGatherWebhookSchema: type: object title: TeXML Gather Webhook description: Webhook sent when a Gather command completes (sent to the action URL). properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b CallSid: type: string description: The unique identifier of the call (call_control_id). example: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w Confidence: type: number description: The average confidence score of the speech transcription (conditional, only present when input is speech). example: '0.95' Digits: type: string description: The DTMF digits collected by the Gather command (conditional, only present when input is dtmf). example: '1' From: type: string description: The phone number or SIP address of the caller. example: Defaultj35z6@sip.telnyx.com SpeechResult: type: string description: The transcribed text from speech input (conditional, only present when input is speech). example: Please connect me to sales To: type: string description: The phone number or SIP address that was called. example: '+12132045020' required: - AccountSid - CallSid - CallSidLegacy - From - To TexmlGetCallRecordingResponseBody: type: object title: Texml Get Call Recording Response Body properties: account_sid: $ref: '#/components/schemas/AccountSid' call_sid: $ref: '#/components/schemas/CallControlId' conference_sid: $ref: '#/components/schemas/ConferenceSid' channels: $ref: '#/components/schemas/TwimlRecordingChannels' date_created: $ref: '#/components/schemas/DateTimeRFC2822' date_updated: $ref: '#/components/schemas/DateTimeRFC2822' start_time: $ref: '#/components/schemas/DateTimeRFC2822' duration: $ref: '#/components/schemas/TexmlRecordingDuration' sid: $ref: '#/components/schemas/TexmlSid' source: $ref: '#/components/schemas/RecordingSource' status: $ref: '#/components/schemas/TexmlRecordingStatus' error_code: $ref: '#/components/schemas/TexmlErrorCode' subresources_uris: $ref: '#/components/schemas/TexmlRecordingSubresourcesUris' uri: type: string description: The relative URI for this recording resource. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json media_url: $ref: '#/components/schemas/TexmlRecordingMediaUrl' TexmlGetCallRecordingsResponseBody: type: object title: Multiple recording resources properties: recordings: type: array items: $ref: '#/components/schemas/TexmlGetCallRecordingResponseBody' end: type: integer description: The number of the last element on the page, zero-indexed. example: 19 first_page_uri: type: string format: uri description: Relative uri to the first page of the query results previous_page_uri: type: string format: uri description: Relative uri to the previous page of the query results next_page_uri: type: string description: Relative uri to the next page of the query results example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1 page: type: integer description: Current page number, zero-indexed. example: 0 page_size: type: integer description: The number of items on the page example: 20 start: type: integer description: The number of the first element on the page, zero-indexed. example: 0 uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings.json?Page=0&PageSize=1 TexmlHttpRequestWebhookSchema: type: object title: TeXML HTTP Request Webhook description: Webhook sent to the action URL after an HttpRequest instruction completes (when async="false"). This webhook contains standard call parameters plus any custom fields extracted from the HTTP response via Field mappings defined in the Response/Content section. properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallerId: type: string description: The display name of the caller (conditional, only present if caller_id_name is set). example: John Doe CallSid: type: string description: The unique identifier of the call (call_control_id). example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ ConnectionId: type: string description: The unique identifier of the connection. example: '1234567890' From: type: string description: The phone number or SIP address of the caller. example: '+35319605860' To: type: string description: The phone number or SIP address that was called. example: '+13129457420' additionalProperties: true required: - AccountSid - CallSid - CallSidLegacy - From - To - ConnectionId TexmlPriceUnit: type: - string - 'null' description: The unit in which the price is given. example: USD TexmlQueueWebhookSchema: type: object title: TeXML Queue Webhook description: Webhook sent for queue status events (triggered by Enqueue command waitUrl). properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: 4e71926f-8f13-450e-b91c-23c2ef786aa6 AvgQueueTime: type: string description: The average wait time in seconds for the queue. example: '45' CallSid: type: string description: The unique identifier of the call (call_control_id). example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ ConnectionId: type: string description: The unique identifier of the connection. example: '1234567890' CurrentQueueSize: type: string description: The current number of calls in the queue. example: '3' From: type: string description: The phone number or SIP address of the caller. example: '+35319605860' QueuePosition: type: string description: The current position of the call in the queue. example: '2' QueueSid: type: string description: The unique identifier of the queue. example: my-queue QueueTime: type: string description: The time in seconds the call has been in the queue. example: '30' To: type: string description: The phone number or SIP address that was called. example: '+13129457420' required: - AccountSid - CallSid - CallSidLegacy - From - To - ConnectionId - QueueSid - QueuePosition - CurrentQueueSize - QueueTime - AvgQueueTime TexmlRecordingChannels: type: string enum: - single - dual description: When `dual`, final audio file has the first leg on channel A, and the rest on channel B. `single` mixes both tracks into a single channel. example: single default: dual TexmlRecordingCompletedWebhookSchema: type: object title: TeXML Recording Completed Webhook description: Webhook sent when a recording is completed during a TeXML call (triggered by recordingStatusCallbackEvent). properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b CallSid: type: string description: The unique identifier of the call (call_control_id). example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ ConnectionId: type: string description: The unique identifier of the connection. example: '1234567890' RecordingChannels: type: integer description: The number of channels in the recording (1 for mono, 2 for dual-channel). enum: - 1 - 2 example: 1 RecordingDuration: type: string description: The duration of the recording in seconds. example: '5' RecordingSid: type: string description: A unique identifier for the recording, generated by Telnyx. example: 35094891-3290-4142-b2c2-b2eda57534cf RecordingSource: type: string description: The source of the recording. example: DialVerb RecordingStatus: type: string description: The status of the recording. enum: - completed example: completed RecordingUrl: type: string description: The URL where the recording can be accessed (conditional, only present if recording URL is available). example: https://recording.com/your-recording-url required: - AccountSid - CallSid - CallSidLegacy - ConnectionId - RecordingChannels - RecordingDuration - RecordingSid - RecordingSource - RecordingStatus TexmlRecordingDuration: type: - string - 'null' description: The duration of this recording, given in seconds. example: '12' TexmlRecordingInProgressWebhookSchema: type: object title: TeXML Recording In-Progress Webhook description: Webhook sent when a recording starts during a TeXML call (triggered by recordingStatusCallbackEvent). properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b CallSid: type: string description: The unique identifier of the call (call_control_id). example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ ConnectionId: type: string description: The unique identifier of the connection. example: '1234567890' RecordingChannels: type: integer description: The number of channels in the recording (1 for mono, 2 for dual-channel). enum: - 1 - 2 example: 1 RecordingSid: type: string description: A unique identifier for the recording, generated by Telnyx (conditional, only present if recording_id is available). example: 35094891-3290-4142-b2c2-b2eda57534cf RecordingSource: type: string description: The source of the recording. example: DialVerb RecordingStatus: type: string description: The status of the recording. enum: - in-progress example: in-progress required: - AccountSid - CallSid - CallSidLegacy - ConnectionId - RecordingChannels - RecordingSource - RecordingStatus TexmlRecordingMediaUrl: type: string format: uri example: http://recordings.com/mp3/filename.mp3 TexmlRecordingPrice: type: - string - 'null' description: 'The price of this recording, the currency is specified in the price_unit field. ' example: '0.10' TexmlRecordingStatus: type: string enum: - in-progress - completed - paused - stopped example: paused TexmlRecordingSubresourcesUris: type: object title: Texml recording subresources uris description: Subresources details for a recording if available. properties: transcriptions: type: - string - 'null' format: uri TexmlRecordingTranscription: type: object title: Texml Get Call Recording Transcription Response Body properties: account_sid: $ref: '#/components/schemas/AccountSid' call_sid: $ref: '#/components/schemas/CallControlId' api_version: type: string description: The version of the API that was used to make the request. example: '2010-04-01' date_created: $ref: '#/components/schemas/DateTimeRFC2822' date_updated: $ref: '#/components/schemas/DateTimeRFC2822' duration: $ref: '#/components/schemas/TexmlRecordingDuration' sid: $ref: '#/components/schemas/TexmlSid' recording_sid: $ref: '#/components/schemas/TexmlSid' status: type: string description: The status of the recording transcriptions. The transcription text will be available only when the status is completed. enum: - in-progress - completed example: completed transcription_text: type: string description: The recording's transcribed text example: Good morning, how may I help you? uri: type: string description: The relative URI for the recording transcription resource. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json TexmlReferStatusWebhookSchema: type: object title: TeXML Refer Status Webhook description: Webhook sent for SIP REFER status updates. properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: type: string description: The unique identifier of the call (call_control_id). example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ NotifySipResponseCode: type: string description: The SIP response code from the NOTIFY message (conditional, only present on success). example: '200' ReferCallStatus: type: string description: The status of the SIP REFER operation. enum: - failed - in-progress - busy - canceled example: in-progress ReferSipResponseCode: type: string description: The SIP response code from the REFER message (conditional, only present on success). example: '202' Timestamp: type: string format: date-time description: The timestamp when the event occurred. example: '2024-01-15T10:30:00Z' required: - AccountSid - CallSid - CallSidLegacy - ReferCallStatus - Timestamp TexmlSid: type: string description: Identifier of a resource. example: e9cea0be-7dbd-4b98-98b1-c0089d9d43b0 TexmlSiprecWebhookSchema: type: object title: TeXML SIPREC Webhook description: Webhook sent for SIPREC session status updates. properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: type: string description: The unique identifier of the call (call_control_id). example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ SiprecError: type: string description: Error detail if the SIPREC session failed (conditional, only present when SiprecEvent is siprec-failed). example: SIPREC connection failed SiprecEvent: type: string description: The event type for the SIPREC session. enum: - siprec-started - siprec-stopped - siprec-failed example: siprec-started SiprecSid: type: string description: A unique identifier for the SIPREC session. example: siprec-abc123 Timestamp: type: string format: date-time description: The timestamp when the event occurred. example: '2024-01-15T10:30:00Z' required: - AccountSid - CallSid - SiprecEvent - SiprecSid - Timestamp TexmlStatusCallback: description: Url where status callbacks will be sent. example: http://webhook.com/callback type: string format: uri TexmlStatusCallbackMethod: description: HTTP method used to send status callbacks. example: GET type: string default: POST enum: - GET - POST TexmlStreamUrl: type: string title: Stream destination URL description: The destination WebSocket address where the stream is going to be delivered. example: wss://www.example.com/websocket TexmlStreamWebhookSchema: type: object title: TeXML Stream Webhook description: Webhook sent for media streaming status updates. properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: type: string description: The unique identifier of the call (call_control_id). example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ StreamError: type: string description: Error message if the stream failed (conditional, only present when StreamEvent is stream-error). example: Connection timeout StreamEvent: type: string description: The event type for the media stream. enum: - stream-started - stream-stopped - stream-error example: stream-started StreamName: type: string description: The name of the stream. example: my_stream StreamSid: type: string description: A unique identifier for the stream. example: stream-abc123 Timestamp: type: string format: date-time description: The timestamp when the event occurred. example: '2024-01-15T10:30:00Z' required: - AccountSid - CallSid - CallSidLegacy - StreamSid - StreamEvent - StreamName - Timestamp TexmlTranscriptionWebhookSchema: type: object title: TeXML Transcription Webhook description: Webhook sent when a recording transcription is completed. properties: AccountSid: type: string description: The unique identifier of the account (user_id). example: 61bf923e-5e4d-4595-a110-56190ea18a1b CallSid: type: string description: The unique identifier of the call (call_control_id). example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: type: string description: Legacy call identifier, same as CallSid. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallStatus: type: string description: The status of the call. example: in-progress From: type: string description: The phone number or SIP address of the caller. example: '+35319605860' RecordingSid: type: string description: A unique identifier for the recording that was transcribed. example: 35094891-3290-4142-b2c2-b2eda57534cf RecordingUrl: type: string description: The URL where the recording can be accessed. example: https://api.telnyx.com/v2/recordings/abc123.wav To: type: string description: The phone number or SIP address that was called. example: '+13129457420' TranscriptionSid: type: string description: A unique identifier for the transcription. example: b08f0fa1-a32c-4218-b3b5-9cf78941ccac TranscriptionStatus: type: string description: The status of the transcription. example: completed TranscriptionText: type: string description: The transcribed text from the recording. example: Good morning, how may I help you? required: - AccountSid - CallSid - CallSidLegacy - CallStatus - From - To - RecordingSid - RecordingUrl - TranscriptionStatus - TranscriptionSid - TranscriptionText TexmlUpdateCallRecordingRequestBody: type: object title: Texml Create Call Recording Request Body properties: Status: type: string enum: - in-progress - paused - stopped example: paused TexmlUpdateCallStreamingRequestBody: type: object title: Texml Update Call Streaming Request Body properties: Status: $ref: '#/components/schemas/StreamStatus' TexmlUpdateCallStreamingResponseBody: type: object title: Texml Update Call Streaming Response Body properties: account_sid: $ref: '#/components/schemas/AccountSid' call_sid: $ref: '#/components/schemas/CallControlId' sid: $ref: '#/components/schemas/TexmlSid' status: type: string description: The status of the streaming. enum: - stopped example: stopped date_updated: $ref: '#/components/schemas/DateTimeRFC2822' uri: type: string description: The relative URI for this streaming resource. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA/Streams/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json TexmlUpdateSiprecSessionRequestBody: type: object title: Update Siprec Session Request properties: Status: description: The new status of the resource. Specifying `stopped` will end the siprec session. example: stopped enum: - stopped type: string TexmlUpdateSiprecSessionResponseBody: type: object title: Update Siprec Session Response properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b call_sid: type: string description: The id of the call the resource belongs to. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ sid: description: The SID of the siprec session. example: 61bf923e-5e4d-4595-a110-56190ea18123 type: string date_updated: description: The date and time the siprec session was last updated. example: Fri, 11 Aug 2023 19:12:11 +0000 type: string status: description: The status of the siprec session. example: in-progress type: string enum: - in-progress - stopped uri: description: The URI of the siprec session. example: https://api.telnyx.com/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18123/Calls/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-ai/Siprec/61bf923e-5e4d-4595-a110-56190ea18123 type: string error_code: description: The error code of the siprec session. type: string TextClusteringResponse: properties: task_id: type: string type: object required: - task_id title: TextClusteringResponse TextClusteringResponseData: properties: data: $ref: '#/components/schemas/TextClusteringResponse' type: object required: - data title: TextClusteringResponseData ThreadMessage: type: object properties: id: type: string format: uuid record_type: type: string enum: - email_message direction: type: string enum: - inbound - outbound status: type: string description: Received for inbound messages; the current send status for outbound messages. inbox_id: type: string format: uuid thread_id: type: string format: uuid message_id: type: string nullable: true description: RFC Message-ID header. Null is possible for legacy outbound messages. in_reply_to: type: string nullable: true references: type: array description: Ordered RFC Message-ID values from the References header. items: type: string from: $ref: '#/components/schemas/InboundEmailAddress' to: type: array items: $ref: '#/components/schemas/InboundEmailAddress' cc: type: array items: $ref: '#/components/schemas/InboundEmailAddress' bcc: type: array items: $ref: '#/components/schemas/InboundEmailAddress' reply_to: type: array items: $ref: '#/components/schemas/InboundEmailAddress' subject: type: string nullable: true text_body_url: type: string format: uri nullable: true description: URL for an offloaded plain-text body. Null means the body is not offloaded to a URL; an inline plain-text body may still exist but is not returned on list reads. `reply_text` and `has_quoted_text` are persisted during ingest before any body offload. html_body_url: type: string format: uri nullable: true description: URL for an offloaded HTML body. Null means the body is not offloaded to a URL; an inline HTML body may still exist but is not returned on list reads. Reply extraction uses only the plain-text body during ingest. reply_text: type: string nullable: true description: Conservatively extracted new-reply content persisted from the plain-text body during ingest. Null means no plain-text extraction input was available or extraction was skipped or failed; HTML bodies are not parsed. has_quoted_text: type: boolean description: Whether conservative plain-text extraction detected a quoted tail. False does not prove that the source contains no quoted content. headers: type: object additionalProperties: true inline_files: type: array items: type: object additionalProperties: true attachments: type: array items: type: object additionalProperties: true labels: type: array description: 'Mutable message labels used for agent workflow state (for example `spam`, `needs_review`, `processed`). Distinct from the immutable send-time `tags` on outbound messages: labels are never propagated to Email Detail Records or Mission Control reporting. Always empty for outbound messages. Labels on a message are independent of the labels on its thread.' items: type: string maxLength: 255 maxItems: 50 read_at: type: string format: date-time nullable: true description: Time the inbound message was marked read. Null means unread. received_at: type: string format: date-time nullable: true description: Receipt time for inbound messages; null for outbound messages. sent_at: type: string format: date-time nullable: true description: Creation/send-acceptance time for outbound messages; null for inbound messages. created_at: type: string format: date-time updated_at: type: string format: date-time required: - id - record_type - direction - status - inbox_id - thread_id - message_id - in_reply_to - references - from - to - cc - bcc - reply_to - subject - text_body_url - html_body_url - reply_text - has_quoted_text - headers - inline_files - attachments - labels - read_at - received_at - sent_at - created_at - updated_at TimeRange: type: object properties: from: type: string format: date-time nullable: true to: type: string format: date-time nullable: true required: - from - to TnReleaseEntry: type: object title: TnReleaseEntry properties: phone_number: type: string description: Phone number in E164 format. number_id: type: string description: Phone number ID from the Telnyx API. TnUploadEntry: type: object title: TnUploadEntry properties: number_id: $ref: '#/components/schemas/UUID' phone_number: type: string description: Phone number in E164 format. status: type: string enum: - pending_upload - pending - in_progress - success - error description: Represents the status of the phone number entry upload on Microsoft Teams. example: error default: pending_upload error_code: type: string enum: - internal_error - unable_to_retrieve_default_location - unknown_country_code - unable_to_retrieve_location - unable_to_retrieve_partner_info - unable_to_match_geography_entry description: A code returned by Microsoft Teams if there is an error with the phone number entry upload. example: internal_error error_message: type: string description: A message returned by Microsoft Teams if there is an error with the upload process. civic_address_id: type: string format: uuid description: Identifies the civic address assigned to the phone number entry. location_id: type: string format: uuid description: Identifies the location assigned to the phone number entry. internal_status: type: string enum: - pending_assignment - in_progress - all_internal_jobs_completed - release_requested - release_completed - error description: Represents the status of the phone number entry upload on Telnyx. example: error default: pending_assignment To: description: The phone number, in E.164 format, the fax will be sent to or SIP URI type: string example: '+13127367276' ToNumber: type: string description: Receiving address (+E.164 formatted phone number or short code). example: +E.164 x-format: address TokenGroup: type: object additionalProperties: false properties: record_type: const: token_group id: type: string format: uuid created_at: type: string format: date-time updated_at: type: string format: date-time version: type: integer minimum: 1 name: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ max_budget: anyOf: - $ref: '#/components/schemas/Money' - type: 'null' budget_duration: $ref: '#/components/schemas/BudgetDuration' tpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' rpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' allowed_models: type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ uniqueItems: true maxItems: 1000 max_parallel_requests: anyOf: - type: integer minimum: 1 maximum: 1000 description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot. - type: 'null' cache_ttl: anyOf: - type: integer minimum: 1 maximum: 86400 - type: 'null' provider_key_ids: type: array items: type: string format: uuid uniqueItems: true maxItems: 1000 guardrails: anyOf: - type: object additionalProperties: false properties: secrets: type: object additionalProperties: false properties: prompt: type: string enum: - ignore - flag - block response: type: string enum: - ignore - flag - block dlp: type: object additionalProperties: false properties: profiles: type: array items: type: string enum: - financial - government_id - contact uniqueItems: true prompt: type: string enum: - ignore - flag - block response: type: string enum: - ignore - flag - block streaming: type: string enum: - buffered - passthrough description: Per-group guardrail policy. Missing actions default to ignore. profiles may be listed with both dlp actions ignore (staged, inactive) but a non-ignore dlp action requires at least one profile. streaming defaults to buffered when any response action is block and passthrough otherwise; passthrough with a response block is 400. Findings are codes and counts only; content is never stored. The stored form is echoed back canonicalised (all actions explicit, profiles sorted); {} is stored as an all-ignore policy, null disables. - type: 'null' fallbacks: anyOf: - type: object maxProperties: 1000 additionalProperties: type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ minItems: 1 maxItems: 3 uniqueItems: true description: 'Per-group model fallbacks: primary alias -> ordered list of 1..3 other aliases. Every key and listed alias must be in allowed_models (a PATCH removing a referenced alias is 400); a chain never lists its own key; wildcards are rejected. Chains are one level deep (a step''s own chain is not expanded). Fallback is attempted only for managed routes, only before the first provider event is forwarded, and only to steps the key may use; each attempt is reserved and recorded. {} and null both disable fallbacks.' - type: 'null' retries: anyOf: - type: object additionalProperties: false properties: max_attempts: type: integer minimum: 1 maximum: 5 retry_delay_ms: type: integer minimum: 0 maximum: 5000 default: 250 backoff: type: string enum: - constant - linear - exponential default: exponential request_timeout_ms: anyOf: - type: integer minimum: 1000 maximum: 60000 - type: 'null' required: - max_attempts description: 'Per-group same-route retries. max_attempts counts the first try of each step (the primary and each fallback) and is the ceiling for the x-ltg-max-attempts request header. A step is retried only when its attempt definitely did no provider work (connection failure before dispatch, or 429/529) before the first provider event; an uncertain failure (timeout, 408/500/502/503/504) moves to the next fallback step instead. max_attempts x (1 + the longest fallback chain) must not exceed 8, else 400. The n-th retry waits retry_delay_ms (constant), retry_delay_ms*n (linear) or retry_delay_ms*2^(n-1) (exponential), at most 5 s and never past the request deadline, then jittered uniformly down to half that value so concurrent retries spread out; a provider Retry-After of at most 5 s is honoured and a longer one moves to the next step. request_timeout_ms applies to streaming requests only: it bounds each attempt''s time to its first provider event and never applies after it. Non-stream requests keep the per-attempt hop and idle bounds (their headers arrive only with the finished completion). retry_delay_ms and backoff are floors for the request knobs. Each planned attempt is reserved (at most 8 per request); unused reservation is released at settlement. Managed routes only. The stored form is echoed back with defaults filled in; null disables retries.' - type: 'null' blocked: type: boolean spend: $ref: '#/components/schemas/Money' reserved_spend: $ref: '#/components/schemas/Money' budget_started_at: anyOf: - type: string format: date-time - type: 'null' resets_at: anyOf: - type: string format: date-time - type: 'null' required: - record_type - id - created_at - updated_at - version - name - max_budget - budget_duration - tpm_limit - rpm_limit - allowed_models - cache_ttl - provider_key_ids - guardrails - fallbacks - retries - blocked - spend - reserved_spend - budget_started_at - resets_at TokenGroupCreate: type: object additionalProperties: false properties: name: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ max_budget: anyOf: - $ref: '#/components/schemas/Money' - type: 'null' budget_duration: $ref: '#/components/schemas/BudgetDuration' tpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' rpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' allowed_models: type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ uniqueItems: true maxItems: 1000 max_parallel_requests: anyOf: - type: integer minimum: 1 maximum: 1000 description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot. - type: 'null' cache_ttl: anyOf: - type: integer minimum: 1 maximum: 86400 - type: 'null' provider_key_ids: type: array items: type: string format: uuid uniqueItems: true maxItems: 1000 guardrails: anyOf: - type: object additionalProperties: false properties: secrets: type: object additionalProperties: false properties: prompt: type: string enum: - ignore - flag - block response: type: string enum: - ignore - flag - block dlp: type: object additionalProperties: false properties: profiles: type: array items: type: string enum: - financial - government_id - contact uniqueItems: true prompt: type: string enum: - ignore - flag - block response: type: string enum: - ignore - flag - block streaming: type: string enum: - buffered - passthrough description: Per-group guardrail policy. Missing actions default to ignore. profiles may be listed with both dlp actions ignore (staged, inactive) but a non-ignore dlp action requires at least one profile. streaming defaults to buffered when any response action is block and passthrough otherwise; passthrough with a response block is 400. Findings are codes and counts only; content is never stored. The stored form is echoed back canonicalised (all actions explicit, profiles sorted); {} is stored as an all-ignore policy, null disables. - type: 'null' fallbacks: anyOf: - type: object maxProperties: 1000 additionalProperties: type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ minItems: 1 maxItems: 3 uniqueItems: true description: 'Per-group model fallbacks: primary alias -> ordered list of 1..3 other aliases. Every key and listed alias must be in allowed_models (a PATCH removing a referenced alias is 400); a chain never lists its own key; wildcards are rejected. Chains are one level deep (a step''s own chain is not expanded). Fallback is attempted only for managed routes, only before the first provider event is forwarded, and only to steps the key may use; each attempt is reserved and recorded. {} and null both disable fallbacks.' - type: 'null' retries: anyOf: - type: object additionalProperties: false properties: max_attempts: type: integer minimum: 1 maximum: 5 retry_delay_ms: type: integer minimum: 0 maximum: 5000 default: 250 backoff: type: string enum: - constant - linear - exponential default: exponential request_timeout_ms: anyOf: - type: integer minimum: 1000 maximum: 60000 - type: 'null' required: - max_attempts description: 'Per-group same-route retries. max_attempts counts the first try of each step (the primary and each fallback) and is the ceiling for the x-ltg-max-attempts request header. A step is retried only when its attempt definitely did no provider work (connection failure before dispatch, or 429/529) before the first provider event; an uncertain failure (timeout, 408/500/502/503/504) moves to the next fallback step instead. max_attempts x (1 + the longest fallback chain) must not exceed 8, else 400. The n-th retry waits retry_delay_ms (constant), retry_delay_ms*n (linear) or retry_delay_ms*2^(n-1) (exponential), at most 5 s and never past the request deadline, then jittered uniformly down to half that value so concurrent retries spread out; a provider Retry-After of at most 5 s is honoured and a longer one moves to the next step. request_timeout_ms applies to streaming requests only: it bounds each attempt''s time to its first provider event and never applies after it. Non-stream requests keep the per-attempt hop and idle bounds (their headers arrive only with the finished completion). retry_delay_ms and backoff are floors for the request knobs. Each planned attempt is reserved (at most 8 per request); unused reservation is released at settlement. Managed routes only. The stored form is echoed back with defaults filled in; null disables retries.' - type: 'null' blocked: type: boolean required: - name - allowed_models TokenGroupList: type: object additionalProperties: false properties: data: type: array items: $ref: '#/components/schemas/TokenGroup' meta: $ref: '#/components/schemas/ai-gateway-resources_PageMeta' required: - data - meta TokenGroupPatch: type: object additionalProperties: false properties: name: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ max_budget: anyOf: - $ref: '#/components/schemas/Money' - type: 'null' budget_duration: $ref: '#/components/schemas/BudgetDuration' tpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' rpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' allowed_models: type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ uniqueItems: true maxItems: 1000 max_parallel_requests: anyOf: - type: integer minimum: 1 maximum: 1000 description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot. - type: 'null' cache_ttl: anyOf: - type: integer minimum: 1 maximum: 86400 - type: 'null' provider_key_ids: type: array items: type: string format: uuid uniqueItems: true maxItems: 1000 guardrails: anyOf: - type: object additionalProperties: false properties: secrets: type: object additionalProperties: false properties: prompt: type: string enum: - ignore - flag - block response: type: string enum: - ignore - flag - block dlp: type: object additionalProperties: false properties: profiles: type: array items: type: string enum: - financial - government_id - contact uniqueItems: true prompt: type: string enum: - ignore - flag - block response: type: string enum: - ignore - flag - block streaming: type: string enum: - buffered - passthrough description: Per-group guardrail policy. Missing actions default to ignore. profiles may be listed with both dlp actions ignore (staged, inactive) but a non-ignore dlp action requires at least one profile. streaming defaults to buffered when any response action is block and passthrough otherwise; passthrough with a response block is 400. Findings are codes and counts only; content is never stored. The stored form is echoed back canonicalised (all actions explicit, profiles sorted); {} is stored as an all-ignore policy, null disables. - type: 'null' fallbacks: anyOf: - type: object maxProperties: 1000 additionalProperties: type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ minItems: 1 maxItems: 3 uniqueItems: true description: 'Per-group model fallbacks: primary alias -> ordered list of 1..3 other aliases. Every key and listed alias must be in allowed_models (a PATCH removing a referenced alias is 400); a chain never lists its own key; wildcards are rejected. Chains are one level deep (a step''s own chain is not expanded). Fallback is attempted only for managed routes, only before the first provider event is forwarded, and only to steps the key may use; each attempt is reserved and recorded. {} and null both disable fallbacks.' - type: 'null' retries: anyOf: - type: object additionalProperties: false properties: max_attempts: type: integer minimum: 1 maximum: 5 retry_delay_ms: type: integer minimum: 0 maximum: 5000 default: 250 backoff: type: string enum: - constant - linear - exponential default: exponential request_timeout_ms: anyOf: - type: integer minimum: 1000 maximum: 60000 - type: 'null' required: - max_attempts description: 'Per-group same-route retries. max_attempts counts the first try of each step (the primary and each fallback) and is the ceiling for the x-ltg-max-attempts request header. A step is retried only when its attempt definitely did no provider work (connection failure before dispatch, or 429/529) before the first provider event; an uncertain failure (timeout, 408/500/502/503/504) moves to the next fallback step instead. max_attempts x (1 + the longest fallback chain) must not exceed 8, else 400. The n-th retry waits retry_delay_ms (constant), retry_delay_ms*n (linear) or retry_delay_ms*2^(n-1) (exponential), at most 5 s and never past the request deadline, then jittered uniformly down to half that value so concurrent retries spread out; a provider Retry-After of at most 5 s is honoured and a longer one moves to the next step. request_timeout_ms applies to streaming requests only: it bounds each attempt''s time to its first provider event and never applies after it. Non-stream requests keep the per-attempt hop and idle bounds (their headers arrive only with the finished completion). retry_delay_ms and backoff are floors for the request knobs. Each planned attempt is reserved (at most 8 per request); unused reservation is released at settlement. Managed routes only. The stored form is echoed back with defaults filled in; null disables retries.' - type: 'null' blocked: type: boolean minProperties: 1 TokenGroupResponse: type: object additionalProperties: false properties: data: $ref: '#/components/schemas/TokenGroup' required: - data TokenKey: type: object additionalProperties: false properties: record_type: const: token_key id: type: string format: uuid created_at: type: string format: date-time updated_at: type: string format: date-time version: type: integer minimum: 1 max_parallel_requests: anyOf: - type: integer minimum: 1 maximum: 1000 description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot. - type: 'null' name: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ token_group_id: type: string format: uuid token_user_id: anyOf: - type: string format: uuid - type: 'null' max_budget: anyOf: - $ref: '#/components/schemas/Money' - type: 'null' description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is kept until the key is unblocked). budget_duration: $ref: '#/components/schemas/BudgetDuration' tpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is kept until the key is unblocked). rpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is kept until the key is unblocked). allowed_models: anyOf: - type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ uniqueItems: true maxItems: 1000 - type: 'null' expires_at: anyOf: - type: string format: date-time - type: 'null' blocked: type: boolean required_end_user_id: type: boolean default: false description: Require a nonempty caller-asserted end-user ID; not proof of identity. spend: $ref: '#/components/schemas/Money' reserved_spend: $ref: '#/components/schemas/Money' budget_started_at: anyOf: - type: string format: date-time - type: 'null' resets_at: anyOf: - type: string format: date-time - type: 'null' provisioning: type: string enum: - ready - pending - unavailable - inactive - unsupported - unknown description: 'Provisioning state of the key''s current policy. `pending`: retry readiness with bounded backoff (treat `unknown` the same). `inactive` and `unsupported` are terminal until the key, group, user or catalog changes. `unavailable` means provisioning is stuck and is retried slowly; surface it. Absent while the gateway runs in compatibility mode.' required: - record_type - id - created_at - updated_at - version - name - token_group_id - token_user_id - max_budget - budget_duration - tpm_limit - rpm_limit - allowed_models - expires_at - blocked - required_end_user_id - spend - reserved_spend - budget_started_at - resets_at TokenKeyCreate: type: object additionalProperties: false properties: max_parallel_requests: anyOf: - type: integer minimum: 1 maximum: 1000 description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot. - type: 'null' name: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ token_group_id: type: string format: uuid token_user_id: anyOf: - type: string format: uuid - type: 'null' max_budget: anyOf: - $ref: '#/components/schemas/Money' minimum: 1.0e-06 maximum: 1000 - type: 'null' description: 'Omitted or null defaults to the maximum (1000 USD) (on a blocked key, null is kept until the key is unblocked); a value below the minimum (0.000001 USD) or above the maximum is rejected with 400 limit_out_of_range; a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking is always accepted. The default budget is lifetime unless budget_duration is set. Budgets and spend are an enforcement guard computed at one flat placeholder rate for every Telnyx-hosted model (rate_version telnyx-reference-v1: 5 USD per million input and 15 USD per million output tokens), not the customer''s bill; Telnyx Inference usage is billed separately at the model''s actual price.' budget_duration: $ref: '#/components/schemas/BudgetDuration' tpm_limit: anyOf: - type: integer minimum: 1 maximum: 10000000 - type: 'null' description: 'Omitted or null defaults to the maximum (10000000) (on a blocked key, null is kept until the key is unblocked); a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking is always accepted.' rpm_limit: anyOf: - type: integer minimum: 1 maximum: 6000 - type: 'null' description: 'Omitted or null defaults to the maximum (6000) (on a blocked key, null is kept until the key is unblocked); a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking is always accepted.' allowed_models: anyOf: - type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ uniqueItems: true maxItems: 1000 - type: 'null' expires_at: anyOf: - type: string format: date-time - type: 'null' blocked: type: boolean required_end_user_id: type: boolean default: false description: Require a nonempty caller-asserted end-user ID; not proof of identity. required: - name - token_group_id TokenKeyCreated: type: object additionalProperties: false properties: record_type: const: token_key id: type: string format: uuid created_at: type: string format: date-time updated_at: type: string format: date-time version: type: integer minimum: 1 max_parallel_requests: anyOf: - type: integer minimum: 1 maximum: 1000 description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot. - type: 'null' name: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ token_group_id: type: string format: uuid token_user_id: anyOf: - type: string format: uuid - type: 'null' max_budget: anyOf: - $ref: '#/components/schemas/Money' - type: 'null' description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is kept until the key is unblocked). budget_duration: $ref: '#/components/schemas/BudgetDuration' tpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is kept until the key is unblocked). rpm_limit: anyOf: - type: integer minimum: 0 - type: 'null' description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is kept until the key is unblocked). allowed_models: anyOf: - type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ uniqueItems: true maxItems: 1000 - type: 'null' expires_at: anyOf: - type: string format: date-time - type: 'null' blocked: type: boolean required_end_user_id: type: boolean default: false description: Require a nonempty caller-asserted end-user ID; not proof of identity. spend: $ref: '#/components/schemas/Money' reserved_spend: $ref: '#/components/schemas/Money' budget_started_at: anyOf: - type: string format: date-time - type: 'null' resets_at: anyOf: - type: string format: date-time - type: 'null' provisioning: type: string enum: - ready - pending - unavailable - inactive - unsupported - unknown description: 'Provisioning state of the key''s current policy. `pending`: retry readiness with bounded backoff (treat `unknown` the same). `inactive` and `unsupported` are terminal until the key, group, user or catalog changes. `unavailable` means provisioning is stuck and is retried slowly; surface it. Absent while the gateway runs in compatibility mode.' token: type: string pattern: ^ltg_sk_[A-Za-z0-9_-]+$ readOnly: true required: - record_type - id - created_at - updated_at - version - name - token_group_id - token_user_id - max_budget - budget_duration - tpm_limit - rpm_limit - allowed_models - expires_at - blocked - required_end_user_id - spend - reserved_spend - budget_started_at - resets_at - token TokenKeyCreatedResponse: type: object additionalProperties: false properties: data: $ref: '#/components/schemas/TokenKeyCreated' required: - data TokenKeyList: type: object additionalProperties: false properties: data: type: array items: $ref: '#/components/schemas/TokenKey' meta: $ref: '#/components/schemas/ai-gateway-resources_PageMeta' required: - data - meta TokenKeyPatch: type: object additionalProperties: false properties: max_parallel_requests: anyOf: - type: integer minimum: 1 maximum: 1000 description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot. - type: 'null' name: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ max_budget: anyOf: - $ref: '#/components/schemas/Money' minimum: 1.0e-06 maximum: 1000 - type: 'null' description: 'Omitted or null defaults to the maximum (1000 USD) (on a blocked key, null is kept until the key is unblocked); a value below the minimum (0.000001 USD) or above the maximum is rejected with 400 limit_out_of_range; a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking is always accepted. The default budget is lifetime unless budget_duration is set. Budgets and spend are an enforcement guard computed at one flat placeholder rate for every Telnyx-hosted model (rate_version telnyx-reference-v1: 5 USD per million input and 15 USD per million output tokens), not the customer''s bill; Telnyx Inference usage is billed separately at the model''s actual price.' budget_duration: $ref: '#/components/schemas/BudgetDuration' tpm_limit: anyOf: - type: integer minimum: 1 maximum: 10000000 - type: 'null' description: 'Omitted or null defaults to the maximum (10000000) (on a blocked key, null is kept until the key is unblocked); a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking is always accepted.' rpm_limit: anyOf: - type: integer minimum: 1 maximum: 6000 - type: 'null' description: 'Omitted or null defaults to the maximum (6000) (on a blocked key, null is kept until the key is unblocked); a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking is always accepted.' allowed_models: anyOf: - type: array items: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ uniqueItems: true maxItems: 1000 - type: 'null' expires_at: anyOf: - type: string format: date-time - type: 'null' blocked: type: boolean required_end_user_id: type: boolean description: Require a nonempty caller-asserted end-user ID; not proof of identity. Omission preserves the current requirement. minProperties: 1 TokenKeyResponse: type: object additionalProperties: false properties: data: $ref: '#/components/schemas/TokenKey' required: - data TokenRequest: type: object properties: grant_type: type: string enum: - client_credentials - authorization_code - refresh_token description: OAuth 2.0 grant type scope: type: string description: Space-separated list of requested scopes (for client_credentials) example: admin code: type: string description: Authorization code (for authorization_code flow) redirect_uri: type: string format: uri description: Redirect URI (for authorization_code flow) code_verifier: type: string description: PKCE code verifier (for authorization_code flow) refresh_token: type: string description: Refresh token (for refresh_token flow) client_id: type: string description: OAuth client ID (if not using HTTP Basic auth) client_secret: type: string description: OAuth client secret (if not using HTTP Basic auth) required: - grant_type TokenResponse: type: object properties: access_token: type: string description: The access token token_type: type: string enum: - Bearer description: Token type expires_in: type: integer description: Token lifetime in seconds scope: type: string description: Space-separated list of granted scopes refresh_token: type: string description: Refresh token (if applicable) required: - access_token - token_type - expires_in ToolCall: title: Tool Call type: object description: A call to a function tool created by the model. properties: id: description: The ID of the tool call. type: string type: description: The type of the tool. Currently, only `function` is supported. type: string enum: - function function: description: The function that the model called. type: object properties: name: type: string description: The name of the function to call. required: - name required: - id - type - function example: id: call_123 type: function function: name: get_weather ToolMessage: type: object title: Tool Message properties: role: description: The role of the messages author, in this case `tool`. type: string enum: - tool content: description: The contents of the tool message. type: string tool_call_id: description: Tool call that this message is responding to. type: string metadata: $ref: '#/components/schemas/MessageMetadata' required: - role - content - tool_call_id example: role: tool content: Hello, I'm John. tool_call_id: call_123 ToolNode: description: A standalone tool step in a conversation flow, as returned by the API. properties: id: description: Caller-supplied unique identifier for this node within the flow. title: Id type: string name: description: Optional human-readable label, displayed in authoring UIs. title: Name type: string position: $ref: '#/components/schemas/NodePosition' description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips so frontends can persist graph layout across reloads. shared_tool_id: description: ID of the single shared (org-level) tool this node executes. When the flow reaches this node the tool runs as a deliberate step (no LLM turn); its outgoing `llm` / `expression` edges route the flow on the tool's outcome. Arguments are filled from the conversation's dynamic variables by name — a dynamic variable whose name matches one of the tool's parameters supplies that argument. Cross-validated against the org's shared tools on write. title: Shared Tool Id type: string tool: $ref: '#/components/schemas/AssistantTools' description: Full tool definition resolved from `shared_tool_id` server-side. Populated on responses so clients can render the node without a follow-up fetch. Ignored on input — set `shared_tool_id`. type: const: tool default: tool description: Node kind discriminator. Always `tool` for a tool node. title: Type type: string message: description: 'Optional message delivered to the user verbatim immediately before the tool executes — an announcement such as ''One moment while I look that up.'' No LLM turn and no customer turn: the message is spoken/sent, then the tool runs, in the same deterministic step. `{{variable}}` placeholders are interpolated from the conversation''s dynamic variables (unresolved → empty string); the tool''s own result is not yet available when the message is rendered. Omit for a silent tool step.' example: One moment while I process your payment. minLength: 1 pattern: \S title: Message type: string required: - id - shared_tool_id title: ToolNode type: object ToolNodeReq: description: 'A standalone tool step in a conversation flow, as supplied by clients. Unlike a prompt node, a tool node has no instructions or model — it isn''t an LLM turn. Reaching it deterministically runs one shared tool (arguments filled from matching dynamic variables by name), then routes via outgoing `llm` / `expression` edges, with exactly one `default` fallback edge required when the node has any outgoing edges (the tool''s outcome is readable as `telnyx_last_tool_status_code` in `expression` conditions).' example: id: n_charge message: One moment while I process your payment. name: Charge card position: x: 300 y: 200 shared_tool_id: tool-charge-card type: tool properties: id: description: Caller-supplied unique identifier for this node within the flow. example: n_charge title: Id type: string message: description: 'Optional message delivered to the user verbatim immediately before the tool executes — an announcement such as ''One moment while I look that up.'' No LLM turn and no customer turn: the message is spoken/sent, then the tool runs, in the same deterministic step. `{{variable}}` placeholders are interpolated from the conversation''s dynamic variables (unresolved → empty string); the tool''s own result is not yet available when the message is rendered. Omit for a silent tool step.' example: One moment while I process your payment. minLength: 1 pattern: \S title: Message type: string name: description: Optional human-readable label, displayed in authoring UIs. example: Charge card title: Name type: string position: $ref: '#/components/schemas/NodePosition' description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips so frontends can persist graph layout across reloads. example: x: 300 y: 200 shared_tool_id: description: ID of the single shared (org-level) tool this node executes. When the flow reaches this node the tool runs as a deliberate step (no LLM turn); its outgoing `llm` / `expression` edges route the flow on the tool's outcome. Arguments are filled from the conversation's dynamic variables by name — a dynamic variable whose name matches one of the tool's parameters supplies that argument. Cross-validated against the org's shared tools on write. example: tool-charge-card title: Shared Tool Id type: string type: const: tool default: tool description: Node kind discriminator. Always `tool` for a tool node. title: Type type: string required: - id - shared_tool_id title: ToolNodeReq type: object TosAgreement: type: object description: A recorded user agreement to a product's Terms of Service. The `user_id` is intentionally NOT echoed back on this public surface - the caller already knows their own identity. properties: id: type: string format: uuid description: The unique identifier of this recorded agreement. example: 550e8400-e29b-41d4-a716-446655440000 readOnly: true terms_version: type: string description: The version of the terms you accepted. example: v1.0.0 version: type: string description: Convenience alias of `terms_version`. Both keys are present on every response. example: v1.0.0 readOnly: true product_type: $ref: '#/components/schemas/TosProductType' agreed_at: type: string format: date-time description: When you accepted this version of the terms. example: '2025-07-10T10:30:00Z' readOnly: true created_at: type: string format: date-time description: When this agreement record was created. example: '2025-07-10T10:30:00Z' readOnly: true TosAgreementList: type: object description: Paginated list of Terms of Service agreements for the calling user. required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/TosAgreement' meta: $ref: '#/components/schemas/branded-calling_PaginationMeta' TosAgreementWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/TosAgreement' TosProductType: type: string enum: - branded_calling - number_reputation description: Telnyx product the Terms of Service apply to. example: branded_calling TosStatus: type: object description: Whether the calling user has agreed to a product's current Terms of Service. The `user_id` is intentionally omitted on this public surface. required: - product_type - current_terms_version - has_agreed - agreement_required properties: product_type: $ref: '#/components/schemas/TosProductType' current_terms_version: type: string description: Latest published version of the ToS for this product. example: v1.1.0 has_agreed: type: boolean description: '`true` if the user has agreed to the latest version.' example: false agreed_version: type: string nullable: true description: Version the user previously agreed to (may be older than `current_terms_version`). `null` if the user has never agreed. example: v1.0.0 agreed_at: type: string format: date-time nullable: true description: When you accepted the terms, or null if you have not. example: '2025-07-10T10:30:00Z' agreement_required: type: boolean description: '`true` when the user must agree to the latest version before using the product. Equivalent to `!has_agreed`.' example: true TosStatusWrapped: type: object required: - data properties: data: $ref: '#/components/schemas/TosStatus' TotalSummary: type: object properties: new_mrc: type: string description: Total new monthly recurring charges as decimal string example: '50.00' new_otc: type: string description: Total new one-time charges as decimal string example: '25.00' existing_mrc: type: string description: Total existing monthly recurring charges as decimal string example: '100.00' other: type: string description: Other charges as decimal string example: '10.00' credits: type: string description: Total credits as decimal string example: '-5.00' ledger_adjustments: type: string description: Ledger adjustments as decimal string example: '0.00' grand_total: type: string description: Grand total of all charges as decimal string example: '180.00' required: - new_mrc - new_otc - existing_mrc - other - credits - ledger_adjustments - grand_total TracedMemory: properties: id: type: string title: Id text: type: string title: Text recorded_at: anyOf: - type: string - type: 'null' title: Recorded At source_id: anyOf: - type: string - type: 'null' title: Source Id description: The source this memory was extracted from. Set for a fact, which comes from exactly one source; null for a memory derived from other memories. Read it with `GET .../sources/{source_id}`. A source deleted a moment ago can still be named here, and then answers 404. derived_from: anyOf: - items: type: string type: array - type: 'null' title: Derived From description: The ids of the memories this one was derived from. Read each with `GET .../memories/{memory_id}` to reach its `source_id`. Set for a derived memory; null for a fact. type: object required: - id - text - source_id - derived_from title: TracedMemory TrackingSettings: type: object description: Per-send open and click tracking overrides. Omitted properties inherit the sender domain's tracking settings. properties: open_tracking: type: boolean description: Whether to inject an open-tracking pixel for this message. click_tracking: type: boolean description: Whether to rewrite links for click tracking in this message. TrafficPolicyProfile: type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string readOnly: true example: traffic_policy_profile type: description: The type of the traffic policy profile. type: string enum: - whitelist - blacklist - throttling example: whitelist services: description: Array of PCEF service IDs included in the profile. type: array items: type: string example: - service_123 - service_456 ip_ranges: description: Array of IP ranges in CIDR notation. type: array items: type: string example: - 10.64.0.0/24 - 10.64.0.0/25 domains: description: Array of domain names. type: array items: type: string example: - www.hbomax.com - netflix.com limit_bw_kbps: description: Bandwidth limit in kbps. type: - integer - 'null' example: 512 created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' TrafficType: type: string description: Specifies the type of traffic allowed in this profile. enum: - conversational example: conversational default: conversational TranscriptFrame: type: object description: Server-to-client frame containing a transcription result. properties: type: type: string const: transcript description: Frame type identifier. transcript: type: string description: The transcribed text from the audio. is_final: type: boolean description: Whether this is a final transcription result. When `false`, this is an interim result that may be refined. confidence: type: - number - 'null' description: Confidence score of the transcription, ranging from 0 to 1. `cohere/ar-stt` frames return `null` here rather than omitting the field. required: - type - transcript TranscriptSegment: type: object additionalProperties: false required: - seq - text - confidence - speaker_label - relative_ts - occurred_at properties: seq: type: integer text: type: string confidence: type: - number - 'null' minimum: 0 maximum: 1 speaker_label: type: - string - 'null' relative_ts: type: - number - 'null' occurred_at: type: string format: date-time example: seq: 1 text: Welcome to the project kickoff. confidence: 0.98 speaker_label: Speaker 1 relative_ts: 12.5 occurred_at: '2025-01-15T10:00:12Z' TranscriptSegmentListResponse: type: object additionalProperties: false required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/TranscriptSegment' meta: type: object additionalProperties: false required: - next_after properties: next_after: type: - integer - 'null' description: Cursor to pass as `after` on the next request, or null when the response contains no segments. example: data: - seq: 41 text: let's ship it confidence: 0.94 speaker_label: Ada L. relative_ts: 1240.5 occurred_at: '2026-06-16T09:00:42Z' meta: next_after: 41 Transcription: type: object title: Transcription properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.transcription enum: - call.transcription description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: description: Unique identifier and token for controlling the call. type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. transcription_data: type: object properties: confidence: type: - number - 'null' format: float example: 0.977219 description: Speech recognition confidence level. `cohere/ar-stt` returns `null` here rather than omitting the field. is_final: type: boolean example: true description: When false, it means that this is an interim result. transcript: type: string example: hello this is a test speech description: Recognized text. transcription_track: type: string enum: - inbound - outbound example: inbound description: Indicates which leg of the call has been transcribed. This is only available when `transcription_engine` is set to `B`. example: record_type: event event_type: call.transcription id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:7subYr8fLrXmaAXm8egeAMpoSJ72J3SGPUuome81-hQuaKRf9b7hKA call_leg_id: 5ca81340-5beb-11eb-ae45-02420a0f8b69 call_session_id: 5ca81eee-5beb-11eb-ba6c-02420a0f8b69 connection_id: '1240401930086254526' transcription_data: confidence: 0.977219 is_final: true transcript: hello this is a test speech TranscriptionChallenger: title: TranscriptionChallenger description: A second speech-to-text model that transcribes alongside `transcription.model`, and the rule that decides which transcript the assistant uses. type: object properties: model: type: string enum: - deepgram/flux - deepgram/nova-3 - deepgram/nova-2 - azure/fast - assemblyai/universal-3-5-pro - assemblyai/universal-streaming - xai/grok-stt - soniox/stt-rt-v4 - soniox/stt-rt-v5 - nvidia/parakeet-v3 - omi-health/omi-med-stt-v1 - humain/realtime - reson8/turns - cohere/ar-stt - telnyx/basira - distil-whisper/distil-large-v2 - openai/whisper-large-v3-turbo description: 'The language booster''s model. It must be the same kind of model as `transcription.model`: both streaming (`deepgram/flux`, `deepgram/nova-3`, `deepgram/nova-2`, `assemblyai/universal-3-5-pro` or its legacy alias `assemblyai/universal-streaming`, `xai/grok-stt`, `soniox/stt-rt-v4`, `soniox/stt-rt-v5`, `humain/realtime`, `reson8/turns`) or both non-streaming (`azure/fast`, `nvidia/parakeet-v3`, `omi-health/omi-med-stt-v1`, `cohere/ar-stt`, `distil-whisper/distil-large-v2`, `openai/whisper-large-v3-turbo`, `telnyx/basira`). It can be the same model as `transcription.model` on a different `language`.' language: type: - string - 'null' description: The language this model transcribes. Omit it or set it to `null` to use the language of `transcription.model`. The request is rejected when this model doesn't support the language it would run. It is also rejected when it would run the same model on the same language as `transcription.model`. settings: anyOf: - $ref: '#/components/schemas/TranscriptionSettingsConfig' - type: 'null' description: Settings for the language booster, with the same fields and limits as `transcription.settings`. Fields that don't apply to this model's provider are dropped, and the provider's defaults fill in the rest. Omit it or set it to `null` to use the settings of `transcription.model` where they apply to this model. rule: type: string enum: - best_turn - best_engine - merge_words default: best_turn description: 'How the assistant picks the transcript it uses. The models are compared on how complete and confident their transcripts are, not on language, so the rules work best when both models understand the callers'' language. - `best_turn` (default): both models transcribe the whole call. Each turn uses the language booster''s transcript only when it scores higher than the transcript of `transcription.model` (clearly higher with non-streaming models). With streaming models, `transcription.model` also decides when each turn ends. Available for every pair. - `best_engine`: both models transcribe the first turns, then the call continues alone on the model whose transcripts scored higher. If neither clearly leads, `transcription.model` continues. Streaming models only. - `merge_words`: both models transcribe each utterance and their words are merged, keeping Arabic and English spoken in the same sentence. Available only for `telnyx/basira` with `cohere/ar-stt`, in either order. The pair runs on the language that applies to `telnyx/basira` (its own, or that of `transcription.model`), which must be Arabic (`ar` or an `ar-` locale), `multi`, or `auto`.' required: - model example: model: deepgram/nova-3 language: en rule: best_turn TranscriptionConfig: type: object description: The settings associated with speech to text for the voice assistant. This is only relevant if the assistant uses a text-to-text language model. Any assistant using a model with native audio support (e.g. `fixie-ai/ultravox-v0_4`) will ignore this field. properties: model: description: 'The speech to text model to be used by the voice assistant. Supported models include: - `deepgram/flux` (or `flux`) for live streaming turn-taking. - `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription. - `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription. - `assemblyai/universal-3-5-pro` for live streaming transcription. The legacy alias `assemblyai/universal-streaming` is still accepted and resolves to the same model. - `xai/grok-stt` for live streaming transcription. - `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection. - `nvidia/parakeet-v3` for multilingual transcription with automatic language detection. - `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based). - `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support. - `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language detection. - `cohere/ar-stt` for non-streaming Arabic and English transcription. - `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`. - `google/latest_long` for non-streaming multilingual transcription. - `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription. - `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.' type: string enum: - deepgram/flux - flux - deepgram/nova-3 - deepgram/nova-2 - speechmatics/standard - speechmatics/enhanced - assemblyai/universal-3-5-pro - assemblyai/universal-streaming - xai/grok-stt - soniox/stt-rt-v4 - nvidia/parakeet-v3 - omi-health/omi-med-stt-v1 - humain/realtime - reson8/turns - cohere/ar-stt - azure/fast - azure/realtime - google/latest_long - distil-whisper/distil-large-v2 - openai/whisper-large-v3-turbo default: distil-whisper/distil-large-v2 example: distil-whisper/distil-large-v2 language: type: string description: 'The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language. For `assemblyai/universal-3-5-pro` (and its legacy alias `assemblyai/universal-streaming`), `auto` (or unset) enables native multilingual code-switching; ISO 639-1 codes (`en`, `es`, `de`, `fr`, `pt`, `it`, `tr`, `nl`, `sv`, `no`, `da`, `fi`, `hi`, `vi`, `ar`, `he`, `ja`, `zh`) bias the session to that language. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language` is omitted — omitting it applies `en` instead. For `reson8/turns`, supported values are `auto` (or unset) for automatic language detection, and the language codes `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es`, and `sv` to fix the transcription language. For `cohere/ar-stt`, supported values are `ar` and `en`; unlike other models, this model does not auto-detect and defaults to `ar` when `language` is omitted.' TranscriptionEndpointingPlan: type: object title: TranscriptionEndpointingPlan description: Endpointing thresholds used to decide when the user has finished speaking. Applies to non turn-taking transcription models. For `deepgram/flux`, use `transcription.settings.eot_threshold` / `eot_timeout_ms` / `eager_eot_threshold`. properties: on_punctuation_seconds: type: number format: float default: 0.1 description: Seconds to wait after the transcript ends with punctuation. on_no_punctuation_seconds: type: number format: float default: 1.5 description: Seconds to wait after the transcript ends without punctuation. on_number_seconds: type: number format: float default: 0.5 description: Seconds to wait after the transcript ends with a number. TranscriptionEngineAConfig: type: object title: Transcription engine A config properties: transcription_engine: type: string enum: - A description: Engine identifier for Google transcription service language: $ref: '#/components/schemas/GoogleTranscriptionLanguage' interim_results: type: boolean description: Whether to send also interim results. If set to false, only final results will be sent. default: false example: true enable_speaker_diarization: type: boolean description: Enables speaker diarization. default: false example: true min_speaker_count: description: Defines minimum number of speakers in the conversation. type: integer example: 4 default: 2 format: int32 max_speaker_count: description: Defines maximum number of speakers in the conversation. type: integer example: 4 default: 6 format: int32 profanity_filter: description: Enables profanity_filter. type: boolean default: false example: true use_enhanced: description: Enables enhanced transcription, this works for models `phone_call` and `video`. type: boolean default: false example: true model: description: The model to use for transcription. type: string enum: - latest_long - latest_short - command_and_search - phone_call - video - default - medical_conversation - medical_dictation hints: description: Hints to improve transcription accuracy. type: array items: type: string default: [] example: - Telnyx speech_context: description: Speech context to improve transcription accuracy. type: array items: type: object properties: phrases: type: array items: type: string default: [] example: - Telnyx boost: type: number description: Boost factor for the speech context. default: 1.0 minimum: 0.0 maximum: 20.0 example: 1.0 TranscriptionEngineAssemblyaiConfig: type: object title: Transcription engine AssemblyAI config properties: transcription_engine: type: string enum: - AssemblyAI description: Engine identifier for AssemblyAI transcription service transcription_model: description: The model to use for transcription. `assemblyai/universal-streaming` is a legacy alias of `assemblyai/universal-3-5-pro` and resolves to the same model. type: string enum: - assemblyai/universal-3-5-pro - assemblyai/universal-streaming default: assemblyai/universal-3-5-pro interim_results: type: boolean description: Whether to send also interim results. If set to false, only final results will be sent. default: false example: true TranscriptionEngineAzureConfig: type: object title: Transcription engine Azure config properties: transcription_engine: type: string enum: - Azure description: Engine identifier for Azure transcription service language: $ref: '#/components/schemas/AzureTranscriptionLanguage' region: $ref: '#/components/schemas/AzureTranscriptionRegion' api_key_ref: type: string description: Reference to the API key for authentication. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. The parameter is optional as defaults are available for some regions. required: - transcription_engine - region TranscriptionEngineBConfig: type: object title: Transcription engine B config properties: transcription_engine: type: string enum: - B description: Engine identifier for Telnyx transcription service language: $ref: '#/components/schemas/TelnyxTranscriptionLanguage' transcription_model: description: The model to use for transcription. type: string enum: - openai/whisper-tiny - openai/whisper-large-v3-turbo default: openai/whisper-tiny TranscriptionEngineCohereConfig: type: object title: Transcription engine Cohere config properties: transcription_engine: type: string enum: - Cohere description: Engine identifier for Cohere transcription service transcription_model: description: The model to use for transcription. type: string enum: - cohere/ar-stt default: cohere/ar-stt language: type: string description: The language of the audio to be transcribed. Unlike other self-hosted models, Cohere does not auto-detect the language; `auto` is not supported. enum: - ar - en default: ar example: ar TranscriptionEngineDeepgramConfig: oneOf: - $ref: '#/components/schemas/DeepgramNova2Config' - $ref: '#/components/schemas/DeepgramNova2SpecialtyConfig' - $ref: '#/components/schemas/DeepgramNova3Config' - $ref: '#/components/schemas/DeepgramNova3MedicalConfig' - $ref: '#/components/schemas/DeepgramFluxConfig' - $ref: '#/components/schemas/DeepgramFluxMultiConfig' discriminator: propertyName: transcription_model mapping: deepgram/nova-2: '#/components/schemas/DeepgramNova2Config' deepgram/nova-2-medical: '#/components/schemas/DeepgramNova2SpecialtyConfig' deepgram/nova-2-phonecall: '#/components/schemas/DeepgramNova2SpecialtyConfig' deepgram/nova-3: '#/components/schemas/DeepgramNova3Config' deepgram/nova-3-medical: '#/components/schemas/DeepgramNova3MedicalConfig' deepgram/flux: '#/components/schemas/DeepgramFluxConfig' deepgram/flux-multi: '#/components/schemas/DeepgramFluxMultiConfig' TranscriptionEngineGoogleConfig: type: object title: Transcription engine Google config properties: transcription_engine: type: string enum: - Google description: Engine identifier for Google transcription service language: $ref: '#/components/schemas/GoogleTranscriptionLanguage' interim_results: type: boolean description: Whether to send also interim results. If set to false, only final results will be sent. default: false example: true enable_speaker_diarization: type: boolean description: Enables speaker diarization. default: false example: true min_speaker_count: description: Defines minimum number of speakers in the conversation. type: integer example: 4 default: 2 format: int32 max_speaker_count: description: Defines maximum number of speakers in the conversation. type: integer example: 4 default: 6 format: int32 profanity_filter: description: Enables profanity_filter. type: boolean default: false example: true use_enhanced: description: Enables enhanced transcription, this works for models `phone_call` and `video`. type: boolean default: false example: true model: description: The model to use for transcription. type: string enum: - latest_long - latest_short - command_and_search - phone_call - video - default - medical_conversation - medical_dictation hints: description: Hints to improve transcription accuracy. type: array items: type: string default: [] example: [] speech_context: description: Speech context to improve transcription accuracy. type: array items: type: object properties: phrases: type: array items: type: string default: [] example: [] boost: type: number description: Boost factor for the speech context. default: 1.0 minimum: 0.0 maximum: 20.0 example: 1.0 TranscriptionEngineHumainConfig: type: object title: Transcription engine Humain config properties: transcription_engine: type: string enum: - Humain description: Engine identifier for Humain transcription service transcription_model: description: The model to use for transcription. type: string enum: - humain/realtime default: humain/realtime language: type: string description: The language of the audio to be transcribed. `codeswitch` enables Arabic/English code-switching. `auto` resolves server-side to code-switching. enum: - ar - en - codeswitch - auto default: en example: en TranscriptionEngineParakeetConfig: type: object title: Transcription engine Parakeet config properties: transcription_engine: type: string enum: - Parakeet description: Engine identifier for Parakeet transcription service transcription_model: description: The model to use for transcription. type: string enum: - nvidia/parakeet-v3 - omi-health/omi-med-stt-v1 default: nvidia/parakeet-v3 interim_results: type: boolean description: Whether to send also interim results. If set to false, only final results will be sent. default: false example: true TranscriptionEngineReson8Config: type: object title: Transcription engine Reson8 config properties: transcription_engine: type: string enum: - Reson8 description: Engine identifier for Reson8 transcription service transcription_model: description: The model to use for transcription. type: string enum: - reson8/turns default: reson8/turns language: type: string description: The language of the audio to be transcribed. `auto` (the default, also applied when `language` is omitted) enables automatic language detection. enum: - auto - nl - en - fr - fy - de - it - pl - pt - es - sv default: auto example: auto TranscriptionEngineSonioxConfig: type: object title: Transcription engine Soniox config required: - transcription_engine properties: transcription_engine: type: string enum: - Soniox description: Engine identifier for Soniox transcription service transcription_model: description: The model to use for transcription. type: string enum: - soniox/stt-rt-v4 default: soniox/stt-rt-v4 language: type: string description: ISO 639-1 language hint (e.g. `en`, `es`), or `auto` to omit the hint and let Soniox auto-detect supported languages multilingually. default: auto example: auto interim_results: type: boolean description: Whether to send also interim results. If set to false, only final results will be sent. default: false example: true enable_endpoint_detection: type: boolean description: When true, Soniox emits end-of-utterance events at the cadence configured by `max_endpoint_delay_ms`. default: false example: false max_endpoint_delay_ms: type: integer minimum: 500 maximum: 3000 description: 'Maximum silence (in milliseconds) before Soniox emits an end-of-utterance event. Only honored when `enable_endpoint_detection` is true. Range: 500-3000 ms.' example: 1000 TranscriptionEngineSpeechmaticsConfig: type: object title: Transcription engine Speechmatics config properties: transcription_engine: type: string enum: - Speechmatics description: Engine identifier for Speechmatics transcription service language: $ref: '#/components/schemas/SpeechmaticsTranscriptionLanguage' transcription_model: description: The model to use for transcription. 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. - `deepgram/flux` is optimized for turn-taking with multilingual language hints. - `deepgram/nova-3` is multilingual with automatic language detection. - `deepgram/nova-2` is Deepgram''s previous-generation multilingual model. - `azure/fast` is a multilingual Azure transcription model. - `assemblyai/universal-3-5-pro` is a multilingual streaming model with configurable turn detection. The legacy alias `assemblyai/universal-streaming` is still accepted and resolves to the same model. - `xai/grok-stt` is a multilingual Grok STT model. - `soniox/stt-rt-v4` and `soniox/stt-rt-v5` are multilingual streaming models with automatic language detection, configurable endpointing, term biasing (`context`), and `language_hints`. - `nvidia/parakeet-v3` is a multilingual transcription model with automatic language detection. - `omi-health/omi-med-stt-v1` is an English-only medical transcription model (Parakeet-based). - `humain/realtime` is a streaming model with native Arabic and Arabic/English code-switching support. - `reson8/turns` is a turn-based streaming model covering 10 European languages with automatic language detection. - `cohere/ar-stt` is a non-streaming Arabic and English transcription model. - `telnyx/basira` is a non-streaming Arabic transcription model.' language: type: string description: 'The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4` and `soniox/stt-rt-v5`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language; `settings.language_hints` can pin multiple languages at once instead. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language` is omitted — omitting it applies `en` instead. For `reson8/turns`, supported values are `auto` (or unset) for automatic language detection, and the language codes `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es`, and `sv` to fix the transcription language. For `cohere/ar-stt`, supported values are `ar` and `en`; unlike other models, this model does not auto-detect and defaults to `ar` when `language` is omitted.' 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 — equivalent to setting `send_digits_on_answer` separately. If both are present, the explicit `send_digits_on_answer` parameter takes precedence. type: string example: +18005550100 or sip:username@sip.telnyx.com;secure=srtp from: description: The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format. This attribute will default to the `to` number of the original call if omitted. type: string example: '+18005550101' diversion: description: The `to` number of an active inbound call, in +E164 format. Telnyx checks whether there is currently an active inbound call where `to` matches this `diversion` value and `from` matches the `from` number supplied for this request. If such a call exists, the `from` number is treated as verified (since it is already on an active inbound call to you) and can be used as the caller id for this outbound call. type: string example: '+18005550101' from_display_name: description: The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from` field. type: string example: Company Name privacy: type: string description: Indicates the privacy level to be used for the call. When set to `id`, caller ID information (name and number) will be hidden from the called party. When set to `none` or omitted, caller ID will be shown normally. enum: - id - none example: id audio_url: type: string example: http://example.com/message.wav description: The URL of a file to be played back when the transfer destination answers before bridging the call. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request. send_digits_on_answer: type: string example: wwww200 description: 'DTMF digits to send automatically after the transfer destination answers. Useful for reaching an extension behind an IVR (e.g. `"200"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`, `A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent. May also be supplied inline by appending `,` to `to` (e.g. `to=+18004247767,200`); if both forms are present, this explicit field takes precedence.' early_media: type: boolean default: true example: false description: If set to false, early media will not be passed to the originating leg. media_name: type: string example: my_media_uploaded_to_media_storage_api description: The media_name of a file to be played back when the transfer destination answers before bridging the call. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. timeout_secs: description: The number of seconds that Telnyx will wait for the call to be answered by the destination to which it is being transferred. If the timeout is reached before an answer is received, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `timeout` will be sent. Minimum value is 5 seconds. Maximum value is 600 seconds. default: 30 type: integer example: 60 format: int32 time_limit_secs: description: Sets the maximum duration of a Call Control Leg in seconds. If the time limit is reached, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `time_limit` will be sent. For example, by setting a time limit of 120 seconds, a Call Leg will be automatically terminated two minutes after being answered. The default time limit is 14400 seconds or 4 hours and this is also the maximum allowed call length. default: 14400 type: integer example: 600 format: int32 minimum: 30 maximum: 14400 park_after_unbridge: description: Specifies behavior after the bridge ends (i.e. the opposite leg either hangs up or is transferred). If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default behavior is to hang up the leg. type: string example: self answering_machine_detection: description: 'Enables Answering Machine Detection. When a call is answered, Telnyx runs real-time detection to determine if it was picked up by a human or a machine and sends an `call.machine.detection.ended` webhook with the analysis result. If ''greeting_end'' or ''detect_words'' is used and a ''machine'' is detected, you will receive another ''call.machine.greeting.ended'' webhook when the answering machine greeting ends with a beep or silence. If `detect_beep` is used, you will only receive ''call.machine.greeting.ended'' if a beep is detected. If `answering_machine_detection` is set to `premium_ios_call_screening_detection`, Premium AMD runs with iOS Call Screening support: after an initial `machine` result, Telnyx listens for the iOS call-screening prompt to end or for an Apple Call Screening tone, sends `call.machine.premium.greeting.ended` with `result=prompt_ended` or `call.machine.premium.call_screening.detected` with `result=screening` respectively. When the Apple Call Screening tone is detected, Premium AMD is restarted on the screened call and a `call.machine.premium.detection.ended` webhook with the post-screening classification follows.' default: disabled type: string enum: - premium - premium_ios_call_screening_detection - detect - detect_beep - detect_words - greeting_end - disabled answering_machine_detection_config: description: Optional configuration parameters to modify 'answering_machine_detection' performance. Only `total_analysis_time_millis` and `greeting_duration_millis` parameters are applicable when `premium` is selected as answering_machine_detection. `prompt_end_timeout_millis` is additionally applicable when `premium_ios_call_screening_detection` is selected. type: object properties: total_analysis_time_millis: description: Maximum timeout threshold for overall detection. default: 3500 type: integer example: 5000 format: int32 beep_detection_profile: description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile. default: both type: string example: freq_only enum: - both - freq_only beep_min_frequency_hz: description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when beep detection is active. type: integer example: 550 format: int32 minimum: 200 maximum: 4000 beep_max_frequency_hz: description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when beep detection is active. type: integer example: 2000 format: int32 minimum: 200 maximum: 4000 beep_min_tone_duration_millis: description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when beep detection is active. type: integer example: 300 format: int32 minimum: 50 maximum: 5000 beep_spectral_confirmation: description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when beep detection is active. type: boolean example: true beep_spectral_window_millis: description: Length of the spectral confirmation window, in milliseconds. Only used when beep detection is active. type: integer example: 100 format: int32 minimum: 20 maximum: 1000 beep_spectral_min_purity: description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when beep detection is active. type: number example: 0.8 minimum: 0 maximum: 1 beep_spectral_reject_fax_cng: description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when beep detection is active. type: boolean example: true after_greeting_silence_millis: description: Silence duration threshold after a greeting message or voice for it be considered human. default: 800 type: integer example: 1000 format: int32 between_words_silence_millis: description: Maximum threshold for silence between words. default: 50 type: integer example: 100 format: int32 greeting_duration_millis: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. default: 3500 type: integer example: 1500 format: int32 initial_silence_millis: description: If initial silence duration is greater than this value, consider it a machine. default: 3500 type: integer example: 1800 format: int32 maximum_number_of_words: description: If number of detected words is greater than this value, consder it a machine. default: 5 type: integer example: 3 format: int32 maximum_word_length_millis: description: If a single word lasts longer than this threshold, consider it a machine. default: 3500 type: integer example: 2000 format: int32 silence_threshold: description: Minimum noise threshold for any analysis. default: 256 type: integer example: 512 format: int32 greeting_total_analysis_time_millis: description: If machine already detected, maximum timeout threshold to determine the end of the machine greeting. default: 5000 type: integer example: 7500 format: int32 greeting_silence_duration_millis: description: If machine already detected, maximum threshold for silence between words. If exceeded, the greeting is considered ended. default: 1500 type: integer example: 2000 format: int32 prompt_end_timeout_millis: description: Maximum time Telnyx waits, in milliseconds, for the iOS call-screening prompt to end after Premium AMD initially detects a `machine`. Used when `answering_machine_detection` is `premium_ios_call_screening_detection`. Defaults to 5000 milliseconds. default: 5000 type: integer example: 5000 format: int32 minimum: 1000 maximum: 120000 custom_headers: description: Custom headers to be added to the SIP INVITE. type: array example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d target_leg_client_state: description: Use this field to add state to every subsequent webhook for the new leg. It must be a valid Base-64 encoded string. type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`. type: string example: 891510ac-f3e4-11e8-af5b-de00688a4901 media_encryption: description: 'Defines whether media should be encrypted on the new call leg. For SIP URI destinations, media encryption can also be requested per endpoint with the `secure` URI parameter: `;secure=true` or `;secure=srtp` enables SRTP, and `;secure=dtls` enables DTLS. This parameter, when set to `SRTP` or `DTLS`, takes precedence over the per-endpoint `secure` value.' default: disabled type: string enum: - disabled - SRTP - DTLS sip_auth_username: description: SIP Authentication username used for SIP challenges. type: string example: username sip_auth_password: description: SIP Authentication password used for SIP challenges. type: string example: password sip_headers: description: SIP headers to be added to the SIP INVITE. Currently only User-to-User header is supported. type: array example: - name: User-to-User value: value items: $ref: '#/components/schemas/SipHeader' sip_transport_protocol: description: Defines SIP transport protocol to be used on the call. default: UDP type: string enum: - UDP - TCP - TLS sound_modifications: $ref: '#/components/schemas/SoundModifications' webhook_url: description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call. type: string example: https://www.example.com/server-b/ webhook_url_method: description: HTTP request type used for `webhook_url`. default: POST type: string enum: - POST - GET example: GET mute_dtmf: description: When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information will be sent. type: string enum: - none - both - self - opposite default: none example: opposite record: description: Start recording automatically after an event. Disabled by default. type: string enum: - record-from-answer example: record-from-answer record_channels: description: Defines which channel should be recorded ('single' or 'dual') when `record` is specified. type: string enum: - single - dual default: dual example: single record_format: description: Defines the format of the recording ('wav' or 'mp3') when `record` is specified. type: string enum: - wav - mp3 default: mp3 example: wav record_max_length: description: Defines the maximum length for the recording in seconds when `record` is specified. The minimum value is 0. The maximum value is 43200. The default value is 0 (infinite). type: integer format: int32 default: 0 example: 1000 record_timeout_secs: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite). type: integer format: int32 default: 0 example: 100 record_track: description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single channel). type: string example: outbound default: both enum: - both - inbound - outbound record_trim: description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording. enum: - trim-silence type: string example: trim-silence record_custom_file_name: description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix. type: string minLength: 1 maxLength: 40 example: my_recording_file_name sip_region: description: Defines the SIP region to be used for the call. type: string default: US enum: - US - Europe - Canada - Australia - Middle East example: Canada preferred_codecs: description: The list of comma-separated codecs in order of preference to be used during the call. The codecs supported are `G722`, `PCMU`, `PCMA`, `G729`, `OPUS`, `VP8`, `H264`, `AMR-WB`. type: string example: G722,PCMU,PCMA,G729,OPUS,VP8,H264 webhook_urls: description: A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook URLs associated with that event type will be called instead of `webhook_url`. Events not mapped here will use the default `webhook_url`. type: object additionalProperties: type: array items: type: string format: uri example: call.answered: - https://www.example.com/webhooks/answered call.hangup: - https://www.example.com/webhooks/hangup webhook_urls_method: description: HTTP request method to invoke `webhook_urls`. type: string enum: - POST - GET default: POST example: POST webhook_retries_policies: description: A map of event types to retry policies. Each retry policy contains an array of `retries_ms` specifying the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds. type: object additionalProperties: type: object properties: retries_ms: type: array items: type: integer maxItems: 5 description: Array of delays in milliseconds between retry attempts. Total sum cannot exceed 60000ms. example: call.answered: retries_ms: - 1000 - 2000 - 5000 route_to_mobile: description: When set to true, routes the call directly to the mobile device associated with the destination Telnyx Mobile number, bypassing Inbound Calls Interception configured in the Telnyx Portal under Mobile Numbers → select the number → Voice → Call Interception. Use this when transferring an intercepted call to the mobile device to prevent the call from being intercepted again. Defaults to false. type: boolean default: false example: true TransferTool: properties: type: type: string enum: - transfer transfer: $ref: '#/components/schemas/CallControlTransferToolParams' type: object required: - type - transfer title: TransferTool TriggerBrandSmsOtpRequest: title: TriggerBrandSmsOtpRequest required: - pinSms - successSms type: object properties: pinSms: title: Pinsms type: string description: SMS message template to send the OTP. Must include `@OTP_PIN@` placeholder which will be replaced with the actual PIN example: Your PIN is @OTP_PIN@ successSms: title: Successsms type: string description: SMS message to send upon successful OTP verification example: Verification successful! description: Request body for triggering a Brand SMS OTP TriggerBrandSmsOtpResponse: title: TriggerBrandSmsOtpResponse required: - brandId - referenceId type: object properties: brandId: title: Brandid type: string description: The Brand ID for which the OTP was triggered example: 4b20019b-043a-78f8-0657-b3be3f4b4002 referenceId: title: Referenceid type: string description: The reference ID that can be used to check OTP status example: OTP4B2001 description: Response after successfully triggering a Brand SMS OTP TriggerTestRunRequest: properties: destination_version_id: type: string title: Destination Version Id description: Optional assistant version ID to use for this test run. If provided, the version must exist or a 400 error will be returned. If not provided, test will run on main version example: 123e4567-e89b-12d3-a456-426614174000 type: object title: TriggerTestRunRequest description: 'Request model for triggering a single test run. Optional request body for the trigger test run endpoint.' TriggerTestSuiteRunsRequest: properties: destination_version_id: type: string title: Destination Version Id description: Optional assistant version ID to use for all test runs in this suite. If provided, the version must exist or a 400 error will be returned. If not provided, test will run on main version example: 123e4567-e89b-12d3-a456-426614174000 type: object title: TriggerTestSuiteRunsRequest description: 'Request model for triggering test suite runs. Optional request body for the trigger test suite runs endpoint.' TtsServerEvent: description: Union of all server-to-client WebSocket events for TTS streaming. oneOf: - $ref: '#/components/schemas/AudioChunkFrame' - $ref: '#/components/schemas/FinalFrame' - $ref: '#/components/schemas/ErrorFrame' discriminator: propertyName: type mapping: audio_chunk: '#/components/schemas/AudioChunkFrame' final: '#/components/schemas/FinalFrame' error: '#/components/schemas/ErrorFrame' TwimlRecordingChannels: type: integer enum: - 1 - 2 default: 2 example: 1 UUID: title: UUID type: string format: uuid description: Uniquely identifies the resource. example: 542c3bca-d247-42bc-8fe7-e01d16ecd761 UacConnection: type: object title: UAC Connection properties: id: type: string description: Identifies the type of resource. example: '1293384261075731499' x-format: int64 record_type: type: string description: Identifies the type of the resource. example: uac_connection active: type: boolean description: Defaults to true user_name: type: string description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters). At least one of the first 5 characters must be a letter. example: myusername123 password: type: string description: The password to be used as part of the credentials. Must be 8 to 128 characters long. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected. example: my123secure456password789 created_at: type: string description: ISO-8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO-8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: type: string sip_uri_calling_preference: type: string example: disabled description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal). enum: - disabled - unrestricted - internal default_on_hold_comfort_noise_enabled: type: boolean default: true description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/UacInbound' outbound: $ref: '#/components/schemas/UacOutbound' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' authentication: type: string description: The authentication strategy used by this connection. enum: - uac-authentication example: uac-authentication registration_status: type: - string - 'null' description: The most recently known SIP registration status for this UAC connection. example: Registered registration_status_updated_at: type: - string - 'null' description: ISO 8601 formatted date indicating when the registration status was last updated. example: '2018-02-02T22:25:27.521Z' fqdn: type: string description: The Telnyx-managed FQDN generated for the UAC connection. example: abc123def456.uac.telnyx.com fqdns: type: array description: FQDN records managed automatically by the UAC connection lifecycle. items: $ref: '#/components/schemas/Fqdn' fqdn_outbound_authentication: type: string description: The fixed outbound authentication mode used by UAC FQDN records. enum: - credential-authentication example: credential-authentication internal_uac_settings: $ref: '#/components/schemas/UacInternalSettings' external_uac_settings: $ref: '#/components/schemas/UacExternalSettings' example: id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: uac_connection active: true user_name: myusername123 password: my123secure456password789 created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' anchorsite_override: Latency connection_name: string sip_uri_calling_preference: disabled default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' call_cost_in_webhooks: false webhook_timeout_secs: 25 tags: - tag1 - tag2 rtcp_settings: port: rtp+1 capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true timeout_1xx_secs: 10 timeout_2xx_secs: 15 shaken_stir_enabled: true simultaneous_ringing: enabled outbound: call_parking_enabled: true ani_override: string ani_override_type: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: string t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 authentication: uac-authentication registration_status: Registered registration_status_updated_at: '2018-02-02T22:25:27.521Z' fqdn: abc123def456.uac.telnyx.com fqdns: - id: '1293384261075731499' record_type: fqdn connection_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 fqdn: abc123def456.uac.telnyx.com port: 5060 dns_record_type: srv created_at: '2018-02-02T22:25:27.521Z' updated_at: '2018-02-02T22:25:27.521Z' fqdn_outbound_authentication: credential-authentication internal_uac_settings: destination_uri: 14155550123@acme.sip.telnyx.com external_uac_settings: username: ext8492 password: testtesttest proxy: sip-pbx.acme.example auth_username: auth8492 from_user: '8492' outbound_proxy: outbound.sip-pbx.acme.example:5061 expiration_sec: 600 transport: TLS user_agent: Telnyx-Usage-Voice-Trunk/1.0 bridge_generate_comfort_noise_on_cn: false description: A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration. UacExternalSettings: type: object title: UAC External Settings description: External SIP peer settings used by Telnyx when registering to your PBX and routing outbound calls. properties: username: type: string minLength: 4 maxLength: 256 description: The SIP username used to authenticate with the external SIP peer for registrations and outbound calls. Must start with a letter or number and contain only letters, numbers, hyphens, and underscores. example: ext8492 password: type: string description: The SIP password used for digest authentication with the external SIP peer. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected. example: testtesttest proxy: type: string description: The SIP proxy address of the external SIP peer used for registrations and outbound call routing. example: sip-pbx.acme.example auth_username: type: - string - 'null' maxLength: 256 description: The authentication username used in SIP digest authentication. If not set, the Username value will be used. example: auth8492 from_user: type: - string - 'null' description: The user portion of the SIP From header used in outbound requests. This controls the caller identity presented to the external SIP peer. example: '8492' outbound_proxy: type: - string - 'null' description: An optional SIP proxy used to route outbound requests before reaching the external SIP peer. example: outbound.sip-pbx.acme.example:5061 expiration_sec: type: - integer - 'null' minimum: 1 description: The registration interval, in seconds, indicating how often the system refreshes the SIP registration with the external SIP peer. example: 600 transport: type: - string - 'null' description: The transport protocol used for SIP signaling when communicating with the external SIP peer. One of UDP, TLS, or TCP. enum: - UDP - TLS - TCP - null example: TLS user_agent: type: - string - 'null' minLength: 1 maxLength: 256 pattern: ^[A-Za-z0-9._(),/ -]+$ description: Custom SIP User-Agent header value that Telnyx uses on outbound REGISTER and INVITE messages. Set to null to use Telnyx's default User-Agent. example: Telnyx-Usage-Voice-Trunk/1.0 example: username: ext8492 password: testtesttest proxy: sip-pbx.acme.example auth_username: auth8492 from_user: '8492' outbound_proxy: outbound.sip-pbx.acme.example:5061 expiration_sec: 600 transport: TLS user_agent: Telnyx-Usage-Voice-Trunk/1.0 UacInbound: type: object title: UAC Inbound example: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 default_routing_method: sequential channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true simultaneous_ringing: enabled sip_subdomain: abc123def456 sip_subdomain_receive_settings: only_my_connections properties: ani_number_format: type: string enum: - +E.164 - E.164 - +E.164-national - E.164-national default: E.164-national description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls. dnis_number_format: type: string enum: - +e164 - e164 - national - sip_username default: e164 codecs: type: array items: type: string description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.' default: - G722 - G711U - G711A - G729 - OPUS - H.264 default_routing_method: type: string enum: - sequential - round-robin description: Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed. channel_limit: type: integer default: null description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. isup_headers_enabled: type: boolean default: false description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.) prack_enabled: type: boolean description: Enable PRACK messages as defined in RFC3262. default: false sip_compact_headers_enabled: type: boolean description: Defaults to true. default: true sip_region: type: string default: US description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be used. enum: - US - Europe - Australia timeout_1xx_secs: type: integer description: Time(sec) before aborting if connection is not made. minimum: 1 maximum: 120 default: 3 timeout_2xx_secs: type: integer description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).' minimum: 1 maximum: 600 default: 90 shaken_stir_enabled: type: boolean description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport. default: false simultaneous_ringing: type: string description: When enabled, allows multiple devices to ring simultaneously on incoming calls. default: disabled enum: - disabled - enabled sip_subdomain: type: string description: The Telnyx-generated SIP subdomain for this UAC connection. example: abc123def456 sip_subdomain_receive_settings: type: string description: Controls which SIP URI callers may reach this connection. enum: - only_my_connections - from_anyone example: only_my_connections UacInboundRequest: type: object title: UAC Inbound Request description: Inbound settings that can be supplied when creating or updating a UAC connection. The SIP subdomain fields returned in UAC connection responses are generated by Telnyx and are not accepted as request parameters. example: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 default_routing_method: sequential channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true simultaneous_ringing: enabled properties: ani_number_format: type: string enum: - +E.164 - E.164 - +E.164-national - E.164-national default: E.164-national description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls. dnis_number_format: type: string enum: - +e164 - e164 - national - sip_username default: e164 codecs: type: array items: type: string description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.' default: - G722 - G711U - G711A - G729 - OPUS - H.264 default_routing_method: type: string enum: - sequential - round-robin description: Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed. channel_limit: type: integer default: null description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. isup_headers_enabled: type: boolean default: false description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.) prack_enabled: type: boolean description: Enable PRACK messages as defined in RFC3262. default: false sip_compact_headers_enabled: type: boolean description: Defaults to true. default: true sip_region: type: string default: US description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be used. enum: - US - Europe - Australia timeout_1xx_secs: type: integer description: Time(sec) before aborting if connection is not made. minimum: 1 maximum: 120 default: 3 timeout_2xx_secs: type: integer description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).' minimum: 1 maximum: 600 default: 90 shaken_stir_enabled: type: boolean description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport. default: false simultaneous_ringing: type: string description: When enabled, allows multiple devices to ring simultaneously on incoming calls. default: disabled enum: - disabled - enabled UacInternalSettings: type: object title: UAC Internal Settings description: Internal Telnyx-side settings for a UAC connection. properties: destination_uri: type: string description: The SIP URI that Telnyx will call when handling an inbound request from the external peer. Do not include a `sip:` prefix. The value must be in the format `userinfo@sip.telnyx.com` or `userinfo@sipdev.telnyx.com`; the userinfo portion may contain only letters, digits, hyphens, and underscores. example: 14155550123@acme.sip.telnyx.com example: destination_uri: 14155550123@acme.sip.telnyx.com UacOutbound: type: object title: UAC Outbound example: call_parking_enabled: true ani_override: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: US t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' properties: call_parking_enabled: type: - boolean - 'null' default: false description: Forces all SIP calls originated on this connection to be "parked" instead of "bridged" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next. ani_override: type: string description: Set a phone number as the ani_override value to override caller id number on outbound calls. default: '' ani_override_type: type: string enum: - always - normal - emergency description: Specifies when we apply your ani_override setting. Only applies when ani_override is not blank. default: always channel_limit: type: integer default: null description: When set, this will limit the total number of outbound calls to phone numbers associated with this connection. instant_ringback_enabled: type: boolean default: true description: When set, ringback will not wait for indication before sending ringback tone to calling party. generate_ringback_tone: type: boolean default: false description: Generate ringback tone through 183 session progress message with early media. localization: type: string default: US description: A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default. example: US t38_reinvite_source: type: string enum: - telnyx - customer - disabled - passthru - caller-passthru - callee-passthru description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.

By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite. default: telnyx outbound_voice_profile_id: $ref: '#/components/schemas/connections_OutboundVoiceProfileId' UnauthorizedError: allOf: - $ref: '#/components/schemas/GenericError' - properties: code: example: '10009' type: string title: example: Authentication failed type: string detail: example: The required authentication headers were either invalid or not included in the request. type: string meta: type: object properties: url: type: string example: https://developers.telnyx.com/docs/overview/errors/10009 type: object UnexpectedError: allOf: - $ref: '#/components/schemas/GenericError' - properties: code: example: '10007' type: string title: example: Unexpected error type: string detail: example: An unexpected error occurred. type: string meta: type: object properties: url: type: string example: https://developers.telnyx.com/docs/overview/errors/10007 type: object UnprocessableEntityError: required: - code - title properties: code: type: string x-format: int64 title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object UnsubscribeGroup: type: object required: - id - record_type - name - description - created_at - updated_at properties: id: type: string format: uuid record_type: type: string enum: - email_unsubscribe_group description: View-only. name: type: string minLength: 1 maxLength: 255 description: type: string nullable: true description: Always present (not omit-nullable); `null` when unset. created_at: type: string format: date-time updated_at: type: string format: date-time UnsubscribeGroupListResponse: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/UnsubscribeGroup' meta: $ref: '#/components/schemas/GroupListMeta' UnsubscribeGroupResponse: type: object required: - data properties: data: $ref: '#/components/schemas/UnsubscribeGroup' UnusedUserBundlesResponse: title: UnusedUserBundlesResponse required: - data type: object properties: data: title: Data type: array items: $ref: '#/components/schemas/UnusedUserBundlesSchema' UnusedUserBundlesSchema: title: UnusedUserBundlesSchema required: - billing_bundle - user_bundle_ids type: object properties: billing_bundle: $ref: '#/components/schemas/BillingBundleSummary' user_bundle_ids: title: User Bundle Ids type: array items: type: string format: uuid description: List of user bundle IDs for given bundle. example: - 1e650b96-4c6a-4d6f-b8ed-87c3fcacf595 - 53beb701-1231-4548-8abf-c802f38b14aa UpdateAssistantRequest: properties: name: type: string model: type: string description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model. instructions: type: string description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) tools: $ref: '#/components/schemas/AssistantTools' description: 'Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. On update, a sent `tools` array fully replaces the assistant''s inline tools; omit the field to leave the inline tools unchanged. Each tool type except `function`, `webhook`, and `client_side_tool` allows at most one instance per assistant, counted across inline `tools` and shared `tool_ids` combined — sending a duplicate of such a type returns HTTP 400 with error code 10015. Responses merge shared tools into `tools` with `shared: true`; when updating, omit those tools from the `tools` array and manage them through `tool_ids` instead.' mcp_servers: type: array items: $ref: '#/components/schemas/AssistantMCPServer' default: [] description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here. a2a_agents: type: array items: $ref: '#/components/schemas/AssistantA2AAgent' description: 'A2A agents this assistant can delegate to. Tools are not stored here: at the start of every conversation each agent''s card is fetched and one tool is derived per skill the card advertises, named `a2a__`. The following limits are not enforced when the assistant is saved, and anything past them is dropped when the conversation starts: 64 agents per assistant, 64 skills per card, 128 derived tools per assistant, and a 6 second budget for all card fetches combined. An agent whose card cannot be fetched costs the assistant that capability for the conversation; it does not fail the call. Omit this field to leave the assistant''s agents unchanged; send an empty array to remove them all.' tool_ids: title: Ids of shared tools items: type: string type: array description: IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`. On update, a sent `tool_ids` array fully replaces the assistant's attached shared tools; omit the field to leave them unchanged. Single-instance tool types are counted across inline `tools` and `tool_ids` combined, so attaching a shared tool of such a type when an instance already exists returns HTTP 400 with error code 10015. description: type: string greeting: type: string description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions. llm_api_key_ref: type: string description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.' external_llm: $ref: '#/components/schemas/ExternalLLMReq' fallback_config: $ref: '#/components/schemas/FallbackConfigReq' voice_settings: $ref: '#/components/schemas/inference-embedding_VoiceSettings' avatar_settings: anyOf: - $ref: '#/components/schemas/AvatarSettingsRequest' - type: 'null' description: '**Beta:** Replaces the assistant''s avatar configuration. Omit this field to leave the current configuration unchanged, or set it to `null` to remove the configuration.' transcription: $ref: '#/components/schemas/TranscriptionSettings' telephony_settings: $ref: '#/components/schemas/TelephonySettings' messaging_settings: $ref: '#/components/schemas/MessagingSettings' enabled_features: items: $ref: '#/components/schemas/EnabledFeatures' type: array uniqueItems: true insight_settings: $ref: '#/components/schemas/InsightSettings' privacy_settings: $ref: '#/components/schemas/PrivacySettings' dynamic_variables_webhook_url: type: string description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.' dynamic_variables_webhook_timeout_ms: type: integer minimum: 1 maximum: 10000 default: 1500 description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). dynamic_variables: type: object description: Map of dynamic variables and their default values additionalProperties: true widget_settings: $ref: '#/components/schemas/WidgetSettings' interruption_settings: $ref: '#/components/schemas/inference-embedding_InterruptionSettings' integrations: type: array items: $ref: '#/components/schemas/AssistantIntegration' default: [] description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`. observability_settings: $ref: '#/components/schemas/ObservabilityReq' tags: type: array items: type: string default: [] description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints. version_name: type: string maxLength: 50 default: New assistant description: Human-readable name for the assistant version. post_conversation_settings: $ref: '#/components/schemas/PostConversationSettingsReq' delegation_settings: $ref: '#/components/schemas/DelegationSettings' websocket_settings: $ref: '#/components/schemas/WebsocketSettings' conversation_flow: $ref: '#/components/schemas/ConversationFlowReq' type: object title: UpdateAssistantRequest UpdateAssistantRequestWithPromotion: allOf: - $ref: '#/components/schemas/UpdateAssistantRequest' - properties: promote_to_main: type: boolean default: true description: Indicates whether the assistant should be promoted to the main version. Defaults to true. type: object UpdateAssistantTestRequest: properties: name: type: string maxLength: 255 minLength: 1 title: Name description: Updated name for the assistant test. Must be unique and descriptive. description: type: string maxLength: 1000 title: Description description: Updated description of the test's purpose and evaluation criteria. telnyx_conversation_channel: $ref: '#/components/schemas/TelnyxConversationChannel' description: Updated communication channel for the test execution. destination: type: string minLength: 1 title: Destination description: Updated target destination for test conversations. max_duration_seconds: type: integer maximum: 3600.0 minimum: 1.0 title: Max Duration Seconds description: Updated maximum test duration in seconds. test_suite: type: string maxLength: 100 title: Test Suite description: Updated test suite assignment for better organization. instructions: type: string maxLength: 5000 minLength: 1 title: Instructions description: Updated test scenario instructions and objectives. rubric: items: type: object required: - name - criteria properties: name: type: string description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity. criteria: type: string description: Specific guidance on how to assess the assistant’s performance for this rubric item. additionalProperties: false type: array minItems: 1 title: Rubric description: Updated evaluation criteria for assessing assistant performance. type: object title: UpdateAssistantTestRequest description: 'Request model for updating an existing assistant test. All fields are optional, allowing partial updates of test configuration. Only provided fields will be updated, others remain unchanged.' UpdateAuthenticationProviderRequest: type: object title: Update Authentication Provider Request properties: name: $ref: '#/components/schemas/name' short_name: $ref: '#/components/schemas/short_name' active: $ref: '#/components/schemas/active' settings: $ref: '#/components/schemas/settings' settings_url: $ref: '#/components/schemas/settings_url' example: name: Okta short_name: myorg active: true settings: idp_entity_id: https://myorg.myidp.com/saml/metadata idp_sso_target_url: https://myorg.myidp.com/trust/saml2/http-post/sso idp_cert_fingerprint: 13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7 idp_cert_fingerprint_algorithm: sha1 UpdateAvatarRequest: type: object additionalProperties: false required: - name properties: name: type: string minLength: 1 maxLength: 255 description: New customer-facing name of the custom avatar. example: Updated portrait UpdateBillingGroup: type: object properties: name: type: string description: A name for the billing group example: name: string UpdateBrand: title: UpdateBrand required: - entityType - displayName - country - email - vertical type: object properties: entityType: allOf: - $ref: '#/components/schemas/EntityType' description: Entity type behind the brand. This is the form of business establishment. displayName: title: Displayname maxLength: 100 type: string description: Display or marketing name of the brand. example: ABC Mobile companyName: title: Companyname maxLength: 100 type: string description: (Required for Non-profit/private/public) Legal company name. example: ABC Inc. firstName: title: Firstname maxLength: 100 type: string description: First name of business contact. example: John lastName: title: Lastname maxLength: 100 type: string description: Last name of business contact. example: Smith ein: title: Ein maxLength: 20 type: string description: (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S. example: '111111111' phone: title: Phone maxLength: 20 type: string description: Valid phone number in e.164 international format. example: '+12024567890' street: title: Street maxLength: 100 type: string description: Street number and name. example: '123' city: title: City maxLength: 100 type: string description: City name example: New York state: title: State maxLength: 20 type: string description: State. Must be 2 letters code for United States. example: NY postalCode: title: Postalcode maxLength: 10 type: string description: Postal codes. Use 5 digit zipcode for United States example: '10001' country: title: Country maxLength: 2 type: string description: 'ISO2 2 characters country code. Example: US - United States' example: US email: title: Email maxLength: 100 type: string description: Valid email address of brand support contact. stockSymbol: title: Stocksymbol maxLength: 10 type: string description: (Required for public company) stock symbol. example: ABC stockExchange: allOf: - $ref: '#/components/schemas/StockExchange' description: (Required for public company) stock exchange. example: NASDAQ ipAddress: title: Ipaddress maxLength: 50 type: string description: IP address of the browser requesting to create brand identity. website: title: Website maxLength: 100 type: string description: Brand website URL. example: http://www.abcmobile.com vertical: allOf: - $ref: '#/components/schemas/Vertical' description: Vertical or industry segment of the brand. altBusinessIdType: $ref: '#/components/schemas/AltBusinessIdType' isReseller: title: Isreseller type: boolean identityStatus: $ref: '#/components/schemas/BrandIdentityStatus' businessContactEmail: title: BusinessContactEmail type: string description: 'Business contact email. Required if `entityType` will be changed to `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this field or set it to `null`.' example: name@example.com webhookURL: title: WebhookURL type: string description: Webhook URL for brand status updates. example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93 webhookFailoverURL: title: WebhookFailoverURL type: string description: Webhook failover URL for brand status updates. example: https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6 altBusinessId: title: Altbusiness Id maxLength: 50 type: string description: Alternate business identifier such as DUNS, LEI, or GIIN UpdateCallControlApplicationRequest: type: object title: Update Call Control Application Request required: - application_name - webhook_event_url properties: application_name: type: string description: A user-assigned name to help manage the application. example: call-router webhook_event_url: type: string format: url description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this Call Control Application. default: false active: type: boolean description: Specifies whether the connection can be used. default: true anchorsite_override: type: string description: 'Latency directs Telnyx to route media through the site with the lowest round-trip time to the user''s connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media. ' enum: - Latency - Chicago, IL - Ashburn, VA - San Jose, CA - London, UK - Chennai, IN - Amsterdam, Netherlands - Toronto, Canada - Sydney, Australia example: Amsterdam, Netherlands default: Latency dtmf_type: type: string description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats. enum: - RFC 2833 - Inband - SIP INFO example: Inband default: RFC 2833 first_command_timeout: type: boolean description: Specifies whether calls to phone numbers associated with this connection should hangup after timing out. example: true default: false first_command_timeout_secs: type: integer description: Specifies how many seconds to wait before timing out a dial command. example: 10 default: 30 tags: type: array items: type: string description: Tags assigned to the Call Control Application. example: - tag1 - tag2 inbound: $ref: '#/components/schemas/CallControlApplicationInbound' outbound: $ref: '#/components/schemas/CallControlApplicationOutbound' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_event_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null redact_dtmf_debug_logging: type: boolean description: When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions. example: true default: false example: application_name: call-router webhook_event_url: https://example.com active: false anchorsite_override: Latency dtmf_type: Inband first_command_timeout: true first_command_timeout_secs: 10 inbound: channel_limit: 10 shaken_stir_enabled: true sip_subdomain: example sip_subdomain_receive_settings: only_my_connections outbound: channel_limit: 10 outbound_voice_profile_id: '1293384261075731499' webhook_api_version: '1' webhook_event_failover_url: https://failover.example.com webhook_timeout_secs: 25 call_cost_in_webhooks: true redact_dtmf_debug_logging: true UpdateCallRequest: type: object title: Update Call Request properties: Status: description: The value to set the call status to. Setting the status to completed ends the call. example: completed type: string Url: description: The URL where TeXML will make a request to retrieve a new set of TeXML instructions to continue the call flow. example: https://www.example.com/intruction-b.xml type: string Method: description: HTTP request type used for `Url`. example: GET type: string enum: - GET - POST FallbackUrl: description: A failover URL for which Telnyx will retrieve the TeXML call instructions if the Url is not responding. example: https://www.example.com/intruction-c.xml type: string FallbackMethod: description: HTTP request type used for `FallbackUrl`. example: GET type: string enum: - GET - POST StatusCallback: description: URL destination for Telnyx to send status callback events to for the call. example: https://www.example.com/callback type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback`. example: GET type: string enum: - GET - POST Texml: description: TeXML to replace the current one with. example: Hello type: string example: Status: completed UpdateCampaignRequest: title: UpdateCampaignRequest type: object properties: resellerId: title: Resellerid maxLength: 8 type: string description: Alphanumeric identifier of the reseller that you want to associate with this campaign. sample1: title: Sample1 maxLength: 255 type: string description: Message sample. Some campaign tiers require 1 or more message samples. sample2: title: Sample2 maxLength: 255 type: string description: Message sample. Some campaign tiers require 2 or more message samples. sample3: title: Sample3 maxLength: 255 type: string description: Message sample. Some campaign tiers require 3 or more message samples. sample4: title: Sample4 maxLength: 255 type: string description: Message sample. Some campaign tiers require 4 or more message samples. sample5: title: Sample5 maxLength: 255 type: string description: Message sample. Some campaign tiers require 5 or more message samples. messageFlow: title: Messageflow maxLength: 2048 type: string description: Message flow description. helpMessage: title: Helpmessage maxLength: 255 type: string description: Help message of the campaign. autoRenewal: title: Autorenewal type: boolean description: Help message of the campaign. default: true webhookURL: title: WebhookURL type: string description: Webhook to which campaign status updates are sent. webhookFailoverURL: title: WebhookURL type: string description: Webhook failover to which campaign status updates are sent. UpdateCloudfsFilesystemRequest: type: object properties: name: type: string description: New filesystem name, unique within your organization. Names are trimmed and lowercased; after normalization they may contain lowercase letters, numbers, `.`, `_`, and `-` only. pattern: ^[a-z0-9._-]+$ minLength: 1 maxLength: 63 example: agent-fs UpdateCollectionRequest: type: object description: Metadata-only update. Provide either or both fields. properties: name: type: string example: Support Transcripts (2026) description: type: string example: Updated description. UpdateConferenceParticipantRequest: type: object title: Update Conference Participant Request properties: end_conference_on_exit: description: Whether the conference should end when this participant exits. type: boolean example: false soft_end_conference_on_exit: description: Whether the conference should soft-end when this participant exits. A soft end will stop new participants from joining but allow existing participants to remain. type: boolean example: false beep_enabled: description: Whether entry/exit beeps are enabled for this participant. type: string enum: - always - never - on_enter - on_exit example: always example: end_conference_on_exit: true beep_enabled: never UpdateConferenceRequest: required: - call_control_id - supervisor_role type: object title: Update Conference Request properties: call_control_id: description: Unique identifier and token for controlling the call example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ== type: string command_id: description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string supervisor_role: description: Sets the participant as a supervisor for the conference. A conference can have multiple supervisors. "barge" means the supervisor enters the conference as a normal participant. This is the same as "none". "monitor" means the supervisor is muted but can hear all participants. "whisper" means that only the specified "whisper_call_control_ids" can hear the supervisor. Defaults to "none". example: whisper type: string enum: - barge - monitor - none - whisper whisper_call_control_ids: description: Array of unique call_control_ids the supervisor can whisper to. If none provided, the supervisor will join the conference as a monitoring participant only. example: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw type: array items: type: string region: $ref: '#/components/schemas/ConferenceRegion' example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 supervisor_role: whisper whisper_call_control_ids: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw UpdateConversationRequest: properties: metadata: type: object description: Metadata associated with the conversation. Set `ai_disabled` to `true` to stop AI from responding to messages (e.g., when a human agent takes over). Set to `false` to re-enable AI responses. additionalProperties: type: string type: object title: UpdateConversationRequest UpdateCredentialConnectionRequest: type: object title: Update Credential Connection Request properties: active: type: boolean description: Defaults to true conversation_persistence: type: boolean description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false. user_name: type: string description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters). example: myusername123 password: type: string description: The password to be used as part of the credentials. Must be 8 to 128 characters long. example: my123secure456password789 anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: $ref: '#/components/schemas/ConnectionName' sip_uri_calling_preference: type: string description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal). enum: - disabled - unrestricted - internal default_on_hold_comfort_noise_enabled: type: boolean default: false description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/CredentialInbound' outbound: $ref: '#/components/schemas/CredentialOutbound' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: active: true password: my123secure456password789 user_name: myusername123 anchorsite_override: Latency connection_name: my name sip_uri_calling_preference: disabled default_on_hold_comfort_noise_enabled: false dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false tags: - tag1 - tag2 rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true simultaneous_ringing: disabled outbound: call_parking_enabled: true ani_override: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: US t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false UpdateDynamicVariablesTool: description: The update_dynamic_variables tool lets the assistant write values into the conversation's dynamic-variables context during the call. Updated variables are available to later `{{variable}}` interpolation (prompts, speak nodes, message templates) and to flow edge conditions. Declare each variable the assistant is allowed to set under `updatable_variables`. properties: type: type: string enum: - update_dynamic_variables shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true update_dynamic_variables: $ref: '#/components/schemas/UpdateDynamicVariablesToolParams' type: object required: - type - update_dynamic_variables title: UpdateDynamicVariablesTool UpdateDynamicVariablesToolParams: description: Configuration for an update_dynamic_variables tool. properties: name: type: string pattern: ^[a-zA-Z0-9_-]+$ description: The function name surfaced to the LLM. Must match the OpenAI function-name pattern `^[a-zA-Z0-9_-]+$` and be unique across the assistant's function, webhook, and client_side tools. example: collect_details description: type: string description: Description of the tool passed to the assistant, guiding when to call it and which variables to update. example: Collect caller details into conversation variables. updatable_variables: type: array description: The dynamic variables the assistant is allowed to write. At least one is required. minItems: 1 items: type: object properties: name: type: string minLength: 1 pattern: ^(?!telnyx_)[a-zA-Z0-9._-]+$ description: The dynamic-variable key to update. Must match `^[a-zA-Z0-9._-]+$` and may not start with the reserved `telnyx_` prefix (reserved for system variables). The `pattern` encodes both rules via a negative lookahead. example: customer_name type: type: string description: Optional hint for the variable's value type (e.g. `string`). example: string description: type: string description: Optional description of the variable, guiding the assistant on what value to capture. example: The caller's full name. required: - name additionalProperties: false required: - name - description - updatable_variables type: object title: UpdateDynamicVariablesToolParams UpdateEmailDomainRequest: type: object properties: inbound_enabled: type: boolean description: Enable or disable inbound routing for this domain dmarc_policy: type: object allOf: - $ref: '#/components/schemas/EmailDMARCPolicy' nullable: true description: 'Update the DMARC policy. The recommended _dmarc TXT record is rebuilt and its verification reset to pending. ' tracking: $ref: '#/components/schemas/DomainsTrackingSettings' UpdateEmailTemplateRequest: type: object properties: name: type: string pattern: ^[A-Za-z0-9 _-]+$ maxLength: 255 subject: type: string nullable: true description: Liquid template subject. maxLength: 255 html_body: type: string nullable: true description: Liquid template HTML body. text_body: type: string nullable: true description: Liquid template text body. variables: type: array items: type: string maxLength: 255 nullable: true description: Persisted variable names. In `automatic` mode a non-null array is rejected; in `explicit` mode this is the exact manual array and each item is limited to 255 Unicode code points. variables_mode: type: string enum: - automatic - explicit description: Controls how `variables` is maintained. Setting `automatic` re-extracts immediately from the effective subject, HTML body, and text body and rejects a simultaneous non-null array. Setting `explicit` requires the exact non-null array, including valid `[]`. With the mode omitted, a non-null array selects explicit mode, null selects automatic mode, and omitting both fields preserves the current mode. Source-content changes re-extract only in automatic mode. strict_variables: type: boolean description: Per-template strict variable-validation setting. autoescape: type: boolean description: Per-template HTML autoescaping setting. variable_schema: type: object nullable: true description: Structured variable requirements. Required variables cannot define defaults; invalid combinations return 422. Set to `null` to clear the schema. additionalProperties: $ref: '#/components/schemas/VariableSchemaEntry' UpdateEmailWebhookRequest: type: object properties: url: type: string format: uri events: type: array minItems: 1 items: $ref: '#/components/schemas/EmailWebhookEvent' 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. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer that the sender and receiver negotiate T38 directly when both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call according to each leg's settings. tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: $ref: '#/components/schemas/WebhookEventUrl' webhook_event_failover_url: $ref: '#/components/schemas/WebhookEventFailoverUrl' webhook_api_version: $ref: '#/components/schemas/WebhookApiVersion' call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false webhook_timeout_secs: $ref: '#/components/schemas/WebhookTimeoutSecs' rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/InboundFqdn' outbound: $ref: '#/components/schemas/OutboundFqdn' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: active: true anchorsite_override: Latency connection_name: string transport_protocol: TLS default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: true tags: - tag1 - tag2 rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US sip_subdomain: string sip_subdomain_receive_settings: only_my_connections timeout_1xx_secs: 10 timeout_2xx_secs: 10 shaken_stir_enabled: true noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false type: object UpdateFqdnRequest: title: Update FQDN Request type: object properties: connection_id: type: string description: ID of the FQDN connection to which this IP should be attached. fqdn: type: string description: FQDN represented by this resource. example: example.com port: type: - integer - 'null' description: Port to use when connecting to this FQDN. default: 5060 example: 5060 dns_record_type: type: string description: The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'. For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not specified, 5060 will be used. example: a example: connection_id: '1516447646313612565' fqdn: example.com port: 8080 dns_record_type: a UpdateInboundMessageRequest: type: object properties: read_at: description: Set to `true` for server time, an ISO 8601 timestamp for an explicit read time, or `null` to mark unread. oneOf: - type: boolean enum: - true - type: string format: date-time - type: string nullable: true enum: - null required: - read_at UpdateIpConnectionRequest: title: Update Ip Connection Request properties: active: type: boolean description: Defaults to true conversation_persistence: type: boolean description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false. anchorsite_override: $ref: '#/components/schemas/AnchorsiteOverride' connection_name: type: string transport_protocol: type: string description: One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication. default: UDP enum: - UDP - TCP - TLS default_on_hold_comfort_noise_enabled: type: boolean default: true description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/InboundIp' outbound: $ref: '#/components/schemas/OutboundIp' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' example: active: true anchorsite_override: Latency connection_name: string transport_protocol: TLS default_on_hold_comfort_noise_enabled: true dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: false ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false tags: - tag1 - tag2 rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 default_routing_method: sequential channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true sip_region: US sip_subdomain: test sip_subdomain_receive_settings: only_my_connections timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true outbound: call_parking_enabled: true ani_override: string ani_override_type: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: string t38_reinvite_source: customer tech_prefix: string ip_authentication_method: token ip_authentication_token: string outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 bridge_generate_comfort_noise_on_cn: false type: object UpdateIpRequest: title: Update Ip Request type: object required: - ip_address properties: connection_id: type: string description: ID of the IP Connection to which this IP should be attached. ip_address: type: string description: IP adddress represented by this resource. example: 192.168.0.0 port: type: integer description: Port to use when connecting to this IP. default: 5060 example: 5060 example: connection_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 ip_address: 192.168.0.0 port: 5060 UpdateMCPServerRequest: type: object properties: id: type: string title: Id name: type: string title: Name type: type: string title: Type url: type: string title: Url api_key_ref: type: - string - 'null' title: Api Key Ref allowed_tools: type: - array - 'null' items: type: string title: Allowed Tools created_at: type: string format: date-time title: Created At title: UpdateMCPServerRequest UpdateManagedAccountGlobalChannelLimitRequest: title: Update Managed Account Global Outbound Channels Request properties: channel_limit: type: integer description: Integer value that indicates the number of allocatable global outbound channels that should be allocated to the managed account. Must be 0 or more. If the value is 0 then the account will have no usable channels and will not be able to perform outbound calling. example: 30 example: channel_limit: 30 type: object UpdateManagedAccountRequest: title: Update Managed Account Request properties: managed_account_allow_custom_pricing: type: boolean description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not. If false, uses the pricing of the manager account. Defaults to false. This value may be changed, but there may be time lag between when the value is changed and pricing changes take effect. example: false example: managed_account_allow_custom_pricing: true type: object UpdateMediaMultipartRequest: type: object title: Upload media multipart request properties: media: description: The file you want to upload. The maximum allowed size is 20 MB. type: string format: binary ttl_secs: description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years. type: integer example: 86400 example: media: string($binary) ttl_secs: 86400 UpdateMediaRequest: type: object title: Upload media request properties: media_url: description: The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size is 20 MB. type: string example: http://www.example.com/audio.mp3 ttl_secs: description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years. type: integer example: 86400 example: media_url: http://www.example.com/audio.mp3 ttl_secs: 86400 UpdateMeetingSessionRequest: title: UpdateMeetingSessionRequest type: object additionalProperties: false description: Request body for updating a meeting session. All fields are optional; an empty object is a valid no-op update. properties: join_at: type: string format: date-time description: ISO-8601 timestamp for the bot to join. May be updated to reschedule. bot_name: type: string minLength: 1 maxLength: 100 description: Updated display name for the bot. UpdateMessageTemplateRequest: title: UpdateMessageTemplateRequest description: The request body when updating a message template. required: - text type: object properties: text: example: 'Your {{app_name}} verification code is: {{code}}.' type: string description: The text content of the message template. UpdateMessagingProfileRequest: type: object properties: record_type: description: Identifies the type of the resource. type: string enum: - messaging_profile readOnly: true id: description: Identifies the type of resource. type: string format: uuid readOnly: true name: description: A user friendly name for the messaging profile. type: string enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean webhook_url: description: The URL where webhooks related to this messaging profile will be sent. type: - string - 'null' format: url webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. type: - string - 'null' format: url webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. type: string enum: - '1' - '2' - '2010-04-01' whitelisted_destinations: description: 'Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. This field is required if the messaging profile doesn''t have it defined yet.' type: array items: description: ISO 3166-1 alpha-2 country code. type: string pattern: ^[A-Z]{2}$ created_at: description: ISO 8601 formatted date indicating when the resource was created. type: string format: date-time readOnly: true updated_at: description: ISO 8601 formatted date indicating when the resource was updated. type: string format: date-time readOnly: true v1_secret: description: Secret used to authenticate with v1 endpoints. type: string number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. type: string pattern: ^[0-9]+(?:\.[0-9]+)?$ daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean mms_fall_back_to_sms: description: enables SMS fallback for MMS messages. type: boolean default: false mms_transcoding: description: enables automated resizing of MMS media. type: boolean default: false mobile_only: description: Send messages only to mobile phone numbers. type: boolean default: false smart_encoding: description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean default: false ai_assistant_id: description: The ID of the AI assistant associated with this messaging profile. type: - string - 'null' example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000 example: name: Updated Profile for Messages webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks enabled: true webhook_api_version: '2' whitelisted_destinations: - US number_pool_settings: toll_free_weight: 10 long_code_weight: 2 skip_unhealthy: false sticky_sender: true geomatch: false url_shortener_settings: domain: example.ex prefix: cmpny replace_blacklist_only: true send_webhooks: false v1_secret: rP1VamejkU2v0qIUxntqLW2c UpdateMissionRequest: properties: name: title: Name type: string description: title: Description type: string model: title: Model type: string instructions: title: Instructions type: string execution_mode: $ref: '#/components/schemas/ExecutionMode' metadata: title: Metadata additionalProperties: true type: object type: object title: UpdateMissionRequest UpdateMissionRunRequest: properties: status: $ref: '#/components/schemas/RunStatus' result_summary: title: Result Summary type: string result_payload: title: Result Payload additionalProperties: true type: object error: title: Error type: string metadata: title: Metadata additionalProperties: true type: object type: object title: UpdateMissionRunRequest UpdateNumberOrderPhoneNumberRequest: properties: regulatory_requirements: type: array items: $ref: '#/components/schemas/UpdateRegulatoryRequirement' type: object UpdateNumberOrderRequest: properties: regulatory_requirements: type: array items: $ref: '#/components/schemas/UpdateRegulatoryRequirement' customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 type: object UpdateOutboundVoiceProfileRequest: type: object title: Outbound Voice Profile required: - name example: name: office traffic_type: conversational service_plan: global concurrent_call_limit: 10 enabled: true tags: - office-profile usage_payment_method: rate-deck whitelisted_destinations: - US - BR - AU max_destination_rate: 10 daily_spend_limit: '100.00' daily_spend_limit_enabled: true billing_group_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 calling_window: start_time: 08:00:00.00Z end_time: 20:00:00.00Z calls_per_cld: 5 properties: name: type: string description: A user-supplied name to help with organization. example: office minLength: 3 traffic_type: $ref: '#/components/schemas/TrafficType' service_plan: $ref: '#/components/schemas/ServicePlan' concurrent_call_limit: type: - integer - 'null' description: Must be no more than your global concurrent call limit. Null means no limit. example: 10 enabled: type: boolean description: Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections. example: true default: true tags: type: array items: type: string example: - office-profile usage_payment_method: $ref: '#/components/schemas/UsagePaymentMethod' whitelisted_destinations: type: array items: type: string description: The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2. example: - US - BR - AU default: - US - CA max_destination_rate: type: number description: Maximum rate (price per minute) for a Destination to be allowed when making outbound calls. daily_spend_limit: type: string description: The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile in a day before disallowing new calls. example: '100.00' daily_spend_limit_enabled: type: boolean description: Specifies whether to enforce the daily_spend_limit on this outbound voice profile. example: true default: false call_recording: $ref: '#/components/schemas/OutboundCallRecording' billing_group_id: type: - string - 'null' format: uuid description: The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned). example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 default: null calling_window: type: object description: Specifies the time window and call limits for calls made using this outbound voice profile. example: start_time: 08:00:00.00Z end_time: 20:00:00.00Z calls_per_cld: 5 properties: start_time: type: string description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start. example: 08:00:00.00Z format: time end_time: type: string description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start. example: 20:00:00.00Z format: time calls_per_cld: type: integer description: The maximum number of calls that can be initiated to a single called party (CLD) within the calling window. A null value means no limit. example: 5 minimum: 0 UpdatePartnerCampaignRequest: title: UpdateCampaignRequest type: object properties: webhookURL: title: WebhookURL type: string description: Webhook to which campaign status updates are sent. example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93 webhookFailoverURL: title: WebhookURL type: string description: Webhook failover to which campaign status updates are sent. example: https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6 UpdatePhoneNumberMessagingSettingsRequest: type: object properties: messaging_profile_id: type: string description: 'Configure the messaging profile this phone number is assigned to: * Omit this field or set its value to `null` to keep the current value. * Set this field to `""` to unassign the number from its messaging profile * Set this field to a quoted UUID of a messaging profile to assign this number to that messaging profile' messaging_product: type: string description: 'Configure the messaging product for this number: * Omit this field or set its value to `null` to keep the current value. * Set this field to a quoted product ID to set this phone number to that product' example: P2P tags: type: array items: type: string description: Tags to set on this phone number. example: messaging_profile_id: dd50eba1-a0c0-4563-9925-b25e842a7cb6 messaging_product: P2P UpdatePhoneNumberRequest: type: object properties: id: type: string description: Identifies the type of resource. readOnly: true tags: type: array description: A list of user-assigned tags to help organize phone numbers. items: type: string external_pin: type: string description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism. hd_voice_enabled: type: boolean description: Indicates whether HD voice is enabled for this number. example: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 address_id: type: string description: Identifies the address associated with the phone number. connection_id: type: string description: Identifies the connection associated with the phone number. billing_group_id: type: string description: Identifies the billing group associated with the phone number. example: id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 tags: - tag address_id: dc8f39ac-953d-4520-b93b-786ae87db0da external_pin: '1234' customer_reference: customer-reference connection_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 billing_group_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 hd_voice_enabled: true UpdatePhoneNumberVoiceSettingsRequest: type: object properties: tech_prefix_enabled: type: boolean default: false description: Controls whether a tech prefix is enabled for this phone number. translated_number: type: string description: This field allows you to rewrite the destination number of an inbound call before the call is routed to you. The value of this field may be any alphanumeric value, and the value will replace the number originally dialed. caller_id_name_enabled: type: boolean default: false description: Controls whether the caller ID name is enabled for this phone number. call_forwarding: $ref: '#/components/schemas/CallForwarding' cnam_listing: $ref: '#/components/schemas/CnamListing' usage_payment_method: type: string enum: - pay-per-minute - channel default: pay-per-minute description: Controls whether a number is billed per minute or uses your concurrent channels. media_features: $ref: '#/components/schemas/MediaFeatures' call_recording: $ref: '#/components/schemas/CallRecording' inbound_call_screening: type: string enum: - disabled - reject_calls - flag_calls default: disabled description: The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it. example: tech_prefix_enabled: true translated_number: '+13035559999' caller_id_name_enabled: true call_forwarding: call_forwarding_enabled: true forwards_to: '+13035559123' forwarding_type: always cnam_listing: cnam_listing_enabled: true cnam_listing_details: example usage_payment_method: pay-per-minute media_features: rtp_auto_adjust_enabled: true accept_any_rtp_packets_enabled: true t38_fax_gateway_enabled: true call_recording: inbound_call_recording_enabled: true inbound_call_recording_format: wav inbound_call_recording_channels: single inbound_call_screening: disabled UpdatePlanStepRequest: properties: status: $ref: '#/components/schemas/StepStatus' metadata: title: Metadata additionalProperties: true type: object type: object title: UpdatePlanStepRequest UpdatePortingOrder: type: object title: UpdatePortingOrder properties: misc: anyOf: - $ref: '#/components/schemas/PortingOrderMisc' - type: 'null' end_user: $ref: '#/components/schemas/PortingOrderEndUser' documents: $ref: '#/components/schemas/PortingOrderDocuments' activation_settings: type: object properties: foc_datetime_requested: type: string format: date-time description: ISO 8601 formatted Date/Time requested for the FOC date example: '2021-03-19T10:07:15.527Z' phone_number_configuration: $ref: '#/components/schemas/PortingOrderPhoneNumberConfiguration' requirement_group_id: type: string format: uuid description: If present, we will read the current values from the specified Requirement Group into the Documents and Requirements for this Porting Order. Note that any future changes in the Requirement Group would have no impact on this Porting Order. We will return an error if a specified Requirement Group conflicts with documents or requirements in the same request. example: DE748D99-06FA-4D90-9F9A-F4B62696BADA requirements: type: array description: 'List of requirements for porting numbers. ' items: $ref: '#/components/schemas/UpdatePortingOrderRequirement' user_feedback: $ref: '#/components/schemas/PortingOrderUserFeedback' webhook_url: type: string format: uri customer_reference: type: string customer_group_reference: type: string messaging: type: object properties: enable_messaging: type: boolean description: Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false, any messaging capabilities will stay with their current provider. example: true UpdatePortingOrderRequirement: type: object description: Specifies a value for a requirement on the Porting Order. required: - field_value - requirement_type_id properties: field_value: type: string description: identifies the document or provides the text value that satisfies this requirement example: 9787fb5f-cbe5-4de4-b765-3303774ee9fe requirement_type_id: type: string description: Identifies the requirement type that the `field_value` fulfills example: 59b0762a-b274-4f76-ac32-4d5cf0272e66 UpdatePronunciationDictRequest: type: object description: Request body for updating a pronunciation dictionary. At least one field must be provided. minProperties: 1 properties: name: type: string description: Updated dictionary name. minLength: 1 maxLength: 255 example: Updated Brand Names items: type: array description: Updated list of pronunciation items (alias or phoneme type). minItems: 1 maxItems: 100 items: $ref: '#/components/schemas/PronunciationDictItem' UpdateQueueRequest: type: object title: Update Queue Request required: - max_size properties: max_size: description: The maximum number of calls allowed in the queue. type: integer minimum: 1 example: 200 example: max_size: 200 UpdateQueuedCallRequest: type: object title: Update Queued Call Request properties: keep_after_hangup: description: Whether the call should remain in queue after hangup. example: true type: boolean example: keep_after_hangup: true UpdateRegulatoryRequirement: properties: requirement_id: type: string format: uuid description: Unique id for a requirement. example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_value: type: string description: The value of the requirement. For address and document requirements, this should be the ID of the resource. For textual, this should be the value of the requirement. example: 45f45a04-b4be-4592-95b1-9306b9db2b21 type: object 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. bridge_generate_comfort_noise_on_cn: type: boolean default: false description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value. Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference; call-processing behavior is implemented separately. example: false dtmf_type: $ref: '#/components/schemas/DtmfType' encode_contact_header_enabled: type: boolean default: false description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios. encrypted_media: $ref: '#/components/schemas/EncryptedMedia' onnet_t38_passthrough_enabled: type: boolean default: false description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings. ios_push_credential_id: $ref: '#/components/schemas/ConnectionIosPushCredentialId' android_push_credential_id: $ref: '#/components/schemas/ConnectionAndroidPushCredentialId' webhook_event_url: type: string format: uri description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. example: https://example.com webhook_event_failover_url: type: - string - 'null' format: uri description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. example: https://failover.example.com default: '' webhook_api_version: type: string description: Determines which webhook format will be used, Telnyx API v1 or v2. enum: - '1' - '2' example: '1' default: '1' webhook_timeout_secs: type: - integer - 'null' minimum: 0 maximum: 30 description: Specifies how many seconds to wait before timing out a webhook. example: 25 default: null call_cost_in_webhooks: type: boolean description: Specifies if call cost webhooks should be sent for this connection. default: false tags: type: array items: type: string description: Tags associated with the connection. example: - tag1 - tag2 rtcp_settings: $ref: '#/components/schemas/ConnectionRtcpSettings' inbound: $ref: '#/components/schemas/UacInboundRequest' outbound: $ref: '#/components/schemas/UacOutbound' noise_suppression: $ref: '#/components/schemas/ConnectionNoiseSuppression' noise_suppression_details: $ref: '#/components/schemas/ConnectionNoiseSuppressionDetails' jitter_buffer: $ref: '#/components/schemas/ConnectionJitterBuffer' internal_uac_settings: $ref: '#/components/schemas/UacInternalSettings' external_uac_settings: $ref: '#/components/schemas/UacExternalSettings' example: active: true password: my123secure456password789 user_name: myusername123 anchorsite_override: Latency connection_name: my name sip_uri_calling_preference: disabled default_on_hold_comfort_noise_enabled: false dtmf_type: RFC 2833 encode_contact_header_enabled: true encrypted_media: SRTP onnet_t38_passthrough_enabled: true ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836 android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e webhook_event_url: https://example.com webhook_event_failover_url: https://failover.example.com webhook_api_version: '1' webhook_timeout_secs: 25 call_cost_in_webhooks: false tags: - tag1 - tag2 rtcp_settings: port: rtcp-mux capture_enabled: true report_frequency_secs: 10 inbound: ani_number_format: +E.164 dnis_number_format: +e164 codecs: - G722 channel_limit: 10 generate_ringback_tone: true isup_headers_enabled: true prack_enabled: true sip_compact_headers_enabled: true timeout_1xx_secs: 10 timeout_2xx_secs: 20 shaken_stir_enabled: true simultaneous_ringing: disabled outbound: call_parking_enabled: true ani_override: always channel_limit: 10 instant_ringback_enabled: true generate_ringback_tone: true localization: US t38_reinvite_source: customer outbound_voice_profile_id: '1293384261075731499' noise_suppression: both noise_suppression_details: engine: deep_filter_net attenuation_limit: 80 jitter_buffer: enable_jitter_buffer: true jitterbuffer_msec_min: 60 jitterbuffer_msec_max: 200 internal_uac_settings: destination_uri: 14155550123@acme.sip.telnyx.com external_uac_settings: username: ext8492 password: testtesttest proxy: sip-pbx.acme.example auth_username: auth8492 from_user: '8492' outbound_proxy: outbound.sip-pbx.acme.example:5061 expiration_sec: 600 transport: TLS user_agent: null bridge_generate_comfort_noise_on_cn: false description: Parameters that can be updated in a UAC connection. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration. UpdateUnsubscribeGroupRequest: type: object properties: name: type: string minLength: 1 maxLength: 255 description: type: string nullable: true description: Partial update; `account_id`/`id` are immutable. UpdateVerifyProfileCallRequest: title: UpdateVerifyProfileCallRequest type: object properties: messaging_template_id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string description: The message template identifier selected from /verify_profiles/templates app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ code_length: example: 6 type: integer description: The length of the verify code to generate. default: 5 whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 UpdateVerifyProfileSMSRequest: title: UpdateVerifyProfileSMSRequest type: object properties: messaging_template_id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string description: The message template identifier selected from /verify_profiles/templates app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ default: Telnyx code_length: example: 6 type: integer description: The length of the verify code to generate. default: 5 whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 UpdateVerifyProfileSettingsWhatsAppRequest: title: UpdateVerifyProfileSettingsWhatsAppRequest type: object properties: whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 waba_id: example: '1234567890' type: - string - 'null' description: Customer Meta WABA ID for Bring-Your-Own-WABA sending default: null sender_phone_number: example: '+13035551234' type: - string - 'null' description: Phone number registered on the customer WABA to send OTPs from default: null template_id: example: authentication_template_id type: - string - 'null' description: Customer pre-approved authentication template ID registered on Meta default: null UpdatedAt: title: Updated At type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2020-02-03T22:25:27.521Z' UplinkData: type: object properties: amount: type: number description: Uplink data example: 1 unit: description: Transmission unit type: string enum: - B - KB - MB default: MB Upload: type: object title: Upload properties: ticket_id: $ref: '#/components/schemas/UUID' tenant_id: type: string format: uuid example: ea175aba-f47c-4702-9400-efaa42688048 location_id: type: string format: uuid example: c37e5036-1e87-42e6-86a2-b3e8dd39a2ad status: type: string enum: - pending_upload - pending - in_progress - partial_success - success - error description: Represents the status of the upload on Microsoft Teams. example: error default: pending_upload available_usages: type: array items: type: string enum: - calling_user_assignment - first_party_app_assignment description: Available usages for the numbers in the upload on Microsoft Teams. error_code: type: string description: A code returned by Microsoft Teams if there is an error with the upload process. error_message: type: string description: A message set if there is an error with the upload process. tn_upload_entries: type: array items: $ref: '#/components/schemas/TnUploadEntry' UploadFileMessagingHostedNumberOrderRequest: type: object example: loa: example loa bill: bill example properties: loa: type: string format: binary description: Must be a signed LOA for the numbers in the order in PDF format. bill: type: string format: binary description: Must be the last month's bill with proof of ownership of all of the numbers in the order in PDF format. UploadMediaMultipartRequest: type: object title: Upload media multipart request required: - media properties: media: description: The file you want to upload. The maximum allowed size is 20 MB. type: string format: binary ttl_secs: description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years. type: integer example: 86400 media_name: description: The unique identifier of a file. type: string example: my_file example: media: string($binary) ttl_secs: 86400 media_name: my-file UploadMediaRequest: type: object title: Upload media request required: - media_url properties: media_url: description: The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size is 20 MB. type: string example: http://www.example.com/audio.mp3 ttl_secs: description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years. type: integer example: 86400 media_name: description: The unique identifier of a file. type: string example: my_file example: media_url: http://www.example.com/audio.mp3 ttl_secs: 86400 media_name: my-file Url: title: Url required: - url type: object properties: url: title: Url maxLength: 2083 minLength: 1 type: string format: uri UrlShortenerSettings: type: - object - 'null' required: - domain description: 'The URL shortener feature allows automatic replacement of URLs that were generated using a public URL shortener service. Some examples include bit.do, bit.ly, goo.gl, ht.ly, is.gd, ow.ly, rebrand.ly, t.co, tiny.cc, and tinyurl.com. Such URLs are replaced with with links generated by Telnyx. The use of custom links can improve branding and message deliverability. To disable this feature, set the object field to `null`. ' properties: domain: type: string example: acct.fyi description: 'One of the domains provided by the Telnyx URL shortener service. ' prefix: type: string example: '' description: 'Optional prefix that can be used to identify your brand, and will appear in the Telnyx generated URLs after the domain name. ' replace_blacklist_only: type: boolean example: true description: 'Use the link replacement tool only for links that are specifically blacklisted by Telnyx. ' send_webhooks: type: boolean example: false description: 'Receive webhooks for when your replaced links are clicked. Webhooks are sent to the webhooks on the messaging profile. ' example: domain: example.ex prefix: '' replace_blacklist_only: true send_webhooks: false UsageExportGuardrailEvaluation: type: object additionalProperties: false properties: id: type: string pattern: ^grd_[0-9a-f-]{36}$ type: const: guardrail.evaluation schema_version: const: 1 request_id: type: string format: uuid created_at: type: string format: date-time token_group_id: type: string format: uuid token_user_id: anyOf: - type: string format: uuid - type: 'null' token_key_id: type: string format: uuid end_user_id: anyOf: - type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ - type: 'null' model: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ stage: type: string enum: - prompt - response outcome: type: string enum: - evaluated - flagged - blocked - unevaluated findings: type: array items: $ref: '#/components/schemas/GuardrailFinding' evaluation_input_tokens: anyOf: - type: integer minimum: 0 - type: 'null' evaluation_output_tokens: anyOf: - type: integer minimum: 0 - type: 'null' metadata: $ref: '#/components/schemas/RequestMetadata' required: - id - type - schema_version - request_id - created_at - token_group_id - token_user_id - token_key_id - end_user_id - model - stage - outcome - findings - evaluation_input_tokens - evaluation_output_tokens - metadata UsageExportInferenceRequest: type: object additionalProperties: false properties: id: type: string pattern: ^req_[0-9a-f-]{36}_r[1-9][0-9]*$ description: 'Deterministic: req_{request_id}_r{revision}. Deduplicate on id.' type: const: inference.request schema_version: const: 1 request_id: type: string format: uuid revision: type: integer minimum: 1 supersedes: anyOf: - type: string pattern: ^req_[0-9a-f-]{36}_r[1-9][0-9]*$ - type: 'null' description: Previous revision id; keep the highest revision per request_id. timings: type: object additionalProperties: false properties: admitted_at: type: string format: date-time first_attempt_at: anyOf: - type: string format: date-time - type: 'null' completed_at: anyOf: - type: string format: date-time - type: 'null' settled_at: type: string format: date-time gateway_duration_ms: anyOf: - type: integer minimum: 0 - type: 'null' description: completed_at - admitted_at as recorded by the ledger; not time to first token. required: - admitted_at - first_attempt_at - completed_at - settled_at - gateway_duration_ms token_group_id: type: string format: uuid token_user_id: anyOf: - type: string format: uuid - type: 'null' token_key_id: type: string format: uuid end_user_id: anyOf: - type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ - type: 'null' model: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ provider: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ provider_model: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ route_mode: type: string enum: - managed - byok - cache protocol: type: string enum: - openai - anthropic stream: type: boolean status: type: string enum: - succeeded - failed - partial - unknown attempts: type: integer minimum: 0 input_tokens: anyOf: - type: integer minimum: 0 - type: 'null' output_tokens: anyOf: - type: integer minimum: 0 - type: 'null' usage_source: anyOf: - type: string enum: - provider - gateway_tokenizer - operator - type: 'null' usage_status: type: string enum: - known - unknown - reconciled cost: anyOf: - type: string pattern: ^((0|[1-9][0-9]{0,8})\.[0-9]{6}|1000000000\.000000)$ description: USD decimal string with exactly 6 places, 0 to 1000000000.000000 (the Money bound); enforcement basis, not invoice truth. - type: 'null' biller: type: string enum: - telnyx - provider - none cache_hit: type: boolean provider_key_id: anyOf: - type: string format: uuid - type: 'null' configuration_version: type: integer minimum: 1 rate_version: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ metadata: $ref: '#/components/schemas/RequestMetadata' description: Customer request tags captured at admission; {} when untagged. required: - id - type - schema_version - request_id - revision - supersedes - timings - token_group_id - token_user_id - token_key_id - end_user_id - model - provider - provider_model - route_mode - protocol - stream - status - attempts - input_tokens - output_tokens - usage_source - usage_status - cost - biller - cache_hit - provider_key_id - configuration_version - rate_version - metadata UsageExportPage: type: object additionalProperties: false properties: data: type: array items: $ref: '#/components/schemas/UsageExportRecord' maxItems: 1000 meta: type: object additionalProperties: false properties: next_cursor: type: string minLength: 1 maxLength: 512 pattern: ^[A-Za-z0-9_-]+$ has_more: type: boolean horizon_lag_seconds: type: integer minimum: 0 required: - next_cursor - has_more - horizon_lag_seconds required: - data - meta UsageExportRecord: oneOf: - $ref: '#/components/schemas/UsageExportInferenceRequest' - $ref: '#/components/schemas/UsageExportGuardrailEvaluation' discriminator: propertyName: type mapping: inference.request: '#/components/schemas/UsageExportInferenceRequest' guardrail.evaluation: '#/components/schemas/UsageExportGuardrailEvaluation' UsageMetrics: type: object additionalProperties: false properties: requests: type: integer minimum: 0 input_tokens: type: integer minimum: 0 output_tokens: type: integer minimum: 0 unknown_requests: type: integer minimum: 0 cache_hits: type: integer minimum: 0 succeeded_requests: type: integer minimum: 0 failed_requests: type: integer minimum: 0 partial_requests: type: integer minimum: 0 spend: $ref: '#/components/schemas/Money' reserved_spend: $ref: '#/components/schemas/Money' required: - requests - input_tokens - output_tokens - unknown_requests - cache_hits - succeeded_requests - failed_requests - partial_requests - spend - reserved_spend UsagePaymentMethod: type: string description: Setting for how costs for outbound profile are calculated. enum: - rate-deck example: rate-deck default: rate-deck UsageReportsOptionsRecord: type: object description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records properties: product: type: string description: Telnyx Product example: wireless product_dimensions: type: array description: Telnyx Product Dimensions example: - mnc - mcc - sim_card_id - sim_group_name items: type: string product_metrics: type: array description: Telnyx Product Metrics example: - uplink_data_bytes - downlink_data - downlink_data_bytes - uplink_data - data_cost items: type: string record_types: type: array description: Subproducts if applicable items: $ref: '#/components/schemas/usage-reports_RecordType' UsageReportsOptionsResponse: type: object description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records properties: data: type: array description: Collection of product description items: $ref: '#/components/schemas/UsageReportsOptionsRecord' UsageReportsResponse: type: object properties: meta: $ref: '#/components/schemas/PaginationData' data: type: array example: - product: messaging cost: 0.012 parts: 12 count: 8 customer_carrier_fee: 0 product_name: long_code country_iso: LC direction: outbound - product: messaging cost: 0.021 parts: 21 count: 12 customer_carrier_fee: 0 product_name: long_code country_iso: MP direction: outbound items: type: object additionalProperties: true UsageRequestLegacy: required: - end_time - start_time type: object properties: start_time: type: string description: Start time in ISO format format: date-time example: '2024-02-01T00:00:00Z' end_time: type: string description: End time in ISO format format: date-time example: '2024-02-01T00:00:00Z' aggregation_type: type: integer description: 'Aggregation type: All = 0, By Connections = 1, By Tags = 2, By Billing Group = 3' format: int32 example: 0 connections: type: array description: List of connections to filter by example: - 123 - 456 items: type: integer description: List of connections to filter by format: int64 product_breakdown: type: integer description: 'Product breakdown type: No breakdown = 0, DID vs Toll-free = 1, Country = 2, DID vs Toll-free per Country = 3' format: int32 example: 0 managed_accounts: type: array description: List of managed accounts to include items: type: string format: uuid example: - f47ac10b-58cc-4372-a567-0e02b2c3d479 - 6ba7b810-9dad-11d1-80b4-00c04fd430c8 select_all_managed_accounts: type: boolean description: Whether to select all managed accounts example: false description: Request object for CDR usage report UseCaseCategories: title: UseCaseCategories enum: - 2FA - App Notifications - Appointments - Auctions - Auto Repair Services - Bank Transfers - Billing - Booking Confirmations - Business Updates - COVID-19 Alerts - Career Training - Chatbot - Conversational / Alerts - Courier Services & Deliveries - Emergency Alerts - Events & Planning - Financial Services - Fraud Alerts - Fundraising - General Marketing - General School Updates - HR / Staffing - Healthcare Alerts - Housing Community Updates - Insurance Services - Job Dispatch - Legal Services - Mixed - Motivational Reminders - Notary Notifications - Order Notifications - Political - Public Works - Real Estate Services - Religious Services - Repair and Diagnostics Alerts - Rewards Program - Surveys - System Alerts - Voting Reminders - Waitlist Alerts - Webinar Reminders - Workshop Alerts type: string description: Tollfree usecase categories UsecaseMetadata: title: UsecaseMetadata type: object properties: annualFee: title: Annualfee type: number description: Campaign annual subscription fee maxSubUsecases: title: Maxsubusecases type: integer description: Maximum number of sub-usecases declaration required. minSubUsecases: title: Minsubusecases type: integer description: Minimum number of sub-usecases declaration required. mnoMetadata: title: Mnometadata type: object description: Map of usecase metadata for each MNO. Key is the network ID of the MNO (e.g. 10017), Value is the mno metadata for the usecase. additionalProperties: true monthlyFee: title: Monthlyfee type: number description: Campaign monthly subscription fee quarterlyFee: title: Quarterlyfee type: number description: Campaign quarterly subscription fee usecase: title: Usecase type: string description: Campaign usecase UserAddress: type: object title: UserAddress properties: id: type: string format: uuid description: Uniquely identifies the user address. example: c3527e69-dc5a-4b3e-8f44-99d209f83c1d record_type: type: string description: Identifies the type of the resource. example: user_address customer_reference: $ref: '#/components/schemas/customer_reference' first_name: $ref: '#/components/schemas/user-addresses_first_name' last_name: $ref: '#/components/schemas/user-addresses_last_name' business_name: $ref: '#/components/schemas/user-addresses_business_name' phone_number: $ref: '#/components/schemas/user-addresses_phone_number' street_address: $ref: '#/components/schemas/user-addresses_street_address' extended_address: $ref: '#/components/schemas/user-addresses_extended_address' locality: $ref: '#/components/schemas/user-addresses_locality' administrative_area: $ref: '#/components/schemas/user-addresses_administrative_area' neighborhood: $ref: '#/components/schemas/user-addresses_neighborhood' borough: $ref: '#/components/schemas/user-addresses_borough' postal_code: $ref: '#/components/schemas/user-addresses_postal_code' country_code: $ref: '#/components/schemas/user-addresses_country_code' created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' UserAddressCreate: type: object required: - first_name - last_name - business_name - street_address - locality - country_code properties: customer_reference: $ref: '#/components/schemas/customer_reference' first_name: $ref: '#/components/schemas/user-addresses_first_name' last_name: $ref: '#/components/schemas/user-addresses_last_name' business_name: $ref: '#/components/schemas/user-addresses_business_name' phone_number: $ref: '#/components/schemas/user-addresses_phone_number' street_address: $ref: '#/components/schemas/user-addresses_street_address' extended_address: $ref: '#/components/schemas/user-addresses_extended_address' locality: $ref: '#/components/schemas/user-addresses_locality' administrative_area: $ref: '#/components/schemas/user-addresses_administrative_area' neighborhood: $ref: '#/components/schemas/user-addresses_neighborhood' borough: $ref: '#/components/schemas/user-addresses_borough' postal_code: $ref: '#/components/schemas/user-addresses_postal_code' country_code: $ref: '#/components/schemas/user-addresses_country_code' skip_address_verification: $ref: '#/components/schemas/skip_address_verification' UserBalance: type: object properties: pending: type: string description: The account’s pending amount. example: '10.00' record_type: type: string example: balance enum: - balance description: Identifies the type of the resource. balance: type: string description: The account's current balance. example: '300.00' credit_limit: type: string description: The account's credit limit. example: '100.00' available_credit: type: string description: Available amount to spend (balance + credit limit) example: '400.00' currency: type: string description: The ISO 4217 currency identifier. example: USD example: record_type: balance pending: '10.00' balance: '300.00' credit_limit: '100.00' available_credit: '400.00' currency: USD UserBundle: type: object required: - id - active - user_id - created_at - billing_bundle - resources properties: id: type: string format: uuid example: ca1d2263-d1f1-43ac-ba53-248e7a4bb26a description: User bundle's ID, this is used to identify the user bundle in the API. active: type: boolean example: true description: Status of the user bundle. user_id: type: string format: uuid example: 16856d8c-cd59-4b08-9ac2-1ebb01d419e1 description: The customer's ID that owns this user bundle. created_at: type: string format: date example: '2025-01-20' description: Date the user bundle was created. updated_at: type: - string - 'null' format: date example: '2025-01-20' description: Date the user bundle was last updated. billing_bundle: $ref: '#/components/schemas/BillingBundleSummary' resources: type: array items: $ref: '#/components/schemas/UserBundleResourceSchema' example: [] UserBundleCreateResponse: title: UserBundleCreateResponse required: - data type: object properties: data: $ref: '#/components/schemas/UserBundle' UserBundleResourceSchema: title: UserBundleResourceSchema required: - id - resource - resource_type - created_at type: object properties: id: type: string format: uuid example: ca1d2263-d1f1-43ac-ba53-248e7a4bb26a description: Resource's ID. resource: type: string example: '+15617819942' description: The resource itself (usually a phone number). resource_type: type: string example: number description: The type of the resource (usually 'number'). created_at: type: string format: date example: '2025-01-20' description: Date the resource was created. updated_at: type: - string - 'null' format: date example: '2025-01-20' description: Date the resource was last updated. UserBundleResourcesResponse: title: UserBundleResourcesResponse required: - data type: object properties: data: title: Data type: array items: $ref: '#/components/schemas/UserBundleResourceSchema' UserBundleResponse: title: UserBundleResponse required: - data type: object properties: data: $ref: '#/components/schemas/UserBundle' UserEmbeddedBuckets: properties: buckets: items: type: string type: array title: Buckets type: object required: - buckets title: UserEmbeddedBuckets UserEmbeddedBucketsData: properties: data: $ref: '#/components/schemas/UserEmbeddedBuckets' type: object required: - data title: UserEmbeddedBucketsData UserGroupReference: type: object title: UserGroupReference description: A reference to a group that a user belongs to. properties: id: type: string description: The unique identifier of the group. example: 7b09cdc3-8948-47f0-aa62-74ac943d6c59 name: type: string description: The name of the group. example: Engineering required: - id - name example: id: 7b09cdc3-8948-47f0-aa62-74ac943d6c59 name: Engineering UserId: description: Identifier of the user to whom the fax belongs type: string format: uuid example: a7f7c54a-4df3-4bca-a65a-3da1ecc777f0 UserMessage: type: object title: User message. description: Messages sent by an end user properties: role: description: The role of the messages author, in this case `user`. type: string enum: - user content: description: The contents of the user message. type: string metadata: $ref: '#/components/schemas/MessageMetadata' required: - role - content example: role: user content: Hello, I would like some help. UserRequirement: type: object properties: requirement_id: type: string field_value: type: string field_type: type: string status: type: string enum: - approved - unapproved - pending-approval - declined - expired expires_at: type: string format: date-time created_at: type: string format: date-time updated_at: type: string format: date-time UserTagList: type: array items: type: string example: my-tag description: 'A list of your tags on the given resource type. NOTE: The casing of the tags returned will not necessarily match the casing of the tags when they were added to a resource. This is because the tags will have the casing of the first time they were used within the Telnyx system regardless of source.' ValidateAddressField: type: object properties: street_address: $ref: '#/components/schemas/street_address' extended_address: $ref: '#/components/schemas/extended_address' locality: $ref: '#/components/schemas/locality' administrative_area: $ref: '#/components/schemas/administrative_area' postal_code: $ref: '#/components/schemas/postal_code' country_code: $ref: '#/components/schemas/country_code' ValidateAddressRequest: type: object required: - country_code - street_address - postal_code properties: street_address: $ref: '#/components/schemas/street_address' extended_address: $ref: '#/components/schemas/extended_address' locality: $ref: '#/components/schemas/locality' administrative_area: $ref: '#/components/schemas/administrative_area' postal_code: $ref: '#/components/schemas/postal_code' country_code: $ref: '#/components/schemas/country_code' ValidateAddressResult: type: object title: Validate address action result properties: result: type: string description: Indicates whether an address is valid or invalid. enum: - valid - invalid example: valid suggested: type: object description: Provides normalized address when available. $ref: '#/components/schemas/ValidateAddressField' additionalProperties: true record_type: type: string description: Identifies the type of the resource. example: address_validation errors: type: array items: $ref: '#/components/schemas/Error' required: - result - suggested ValidateCallReasonsRequest: type: array description: '**Bare JSON array** of candidate call-reason strings (NOT an object - there is no top-level `call_reasons` key on this endpoint). 1–10 strings, each ≤64 characters.' items: type: string maxLength: 64 minItems: 1 maxItems: 10 example: - Appointment reminders - Billing inquiries ValidateCallReasonsResponse: type: object required: - data properties: data: type: object required: - all_pre_approved - non_approved_reasons - requires_manual_vetting properties: all_pre_approved: type: boolean description: '`true` when every supplied reason matches a pre-vetted entry in the call-reason library. When `true`, the DIR will sail through the call-reasons portion of vetting.' example: false non_approved_reasons: type: array items: type: string description: Subset of the input that does NOT match the pre-vetted library. The DIR can still be submitted with these - they will go through manual review. example: - Appointment reminders - Billing inquiries requires_manual_vetting: type: boolean description: '`true` when at least one supplied reason is in `non_approved_reasons`. Equivalent to `non_approved_reasons.length > 0` and the inverse of `all_pre_approved`.' example: true ValidationCodes: type: object properties: phone_numbers: type: array items: type: object properties: phone_number: type: string x-format: +E.164 status: type: string enum: - verified - rejected - already_verified required: - phone_number - status order_id: type: string format: uuid required: - phone_numbers - order_id ValidationCodesRequest: type: object properties: verification_codes: type: array items: type: object properties: phone_number: type: string x-format: +E.164 code: type: string required: - phone_number - code required: - verification_codes ValidationError: title: ValidationError required: - loc - msg - type type: object properties: loc: title: Location type: array items: anyOf: - type: string - type: integer msg: title: Message type: string type: title: Error Type type: string ValidationErrorResponse: type: object properties: detail: type: array items: type: object properties: loc: type: array items: oneOf: - type: string - type: integer msg: type: string type: type: string required: - loc - msg - type additionalProperties: true example: detail: - loc: - body - display_name msg: Field required type: missing VariableSchemaEntry: type: object additionalProperties: false properties: required: type: boolean description: Whether the variable must be supplied when strict variable validation is enabled. default: type: string description: Default value for an optional variable. Rejected when `required` is `true`. required: - required Verification: title: Verification type: object properties: id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 format: uuid type: string type: $ref: '#/components/schemas/VerificationType' record_type: $ref: '#/components/schemas/VerificationRecordType' phone_number: example: '+13035551234' type: string description: +E164 formatted phone number. verify_profile_id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 type: string format: uuid description: The identifier of the associated Verify profile. custom_code: example: '43612' type: - string - 'null' description: Send a self-generated numeric code to the end-user default: null timeout_secs: example: 300 type: integer description: 'This is the number of seconds before the code of the request is expired. Once this request has expired, the code will no longer verify the user. Note: this will override the `default_verification_timeout_secs` on the Verify profile.' status: $ref: '#/components/schemas/VerificationStatus' created_at: example: '2020-09-14T17:03:32.965812' type: string updated_at: example: '2020-09-14T17:03:32.965812' type: string VerificationCodesRequest: type: object properties: phone_numbers: type: array items: type: string x-format: +E.164 verification_method: type: string enum: - sms - call required: - phone_numbers - verification_method VerificationProfileRecordType: title: VerificationProfileRecordType enum: - verification_profile type: string example: verification_profile description: The possible verification profile record types. VerificationRecordType: title: VerificationRecordType enum: - verification type: string example: verification description: The possible verification record types. VerificationRequestEgress: title: VerificationRequestEgress required: - businessName - corporateWebsite - businessAddr1 - businessCity - businessState - businessZip - businessContactFirstName - businessContactLastName - businessContactEmail - businessContactPhone - messageVolume - phoneNumbers - useCase - useCaseSummary - productionMessageContent - optInWorkflow - optInWorkflowImageURLs - additionalInformation - id - verificationRequestId type: object properties: businessName: title: Businessname type: string example: Telnyx LLC corporateWebsite: title: Corporatewebsite type: string example: http://example.com businessAddr1: title: Businessaddr1 type: string example: 600 Congress Avenue businessAddr2: title: Businessaddr2 type: string example: 14th Floor businessCity: title: Businesscity type: string example: Austin businessState: title: Businessstate type: string example: Texas businessZip: title: Businesszip type: string example: '78701' businessContactFirstName: title: Businesscontactfirstname type: string example: John businessContactLastName: title: Businesscontactlastname type: string example: Doe businessContactEmail: title: Businesscontactemail type: string example: email@example.com businessContactPhone: title: Businesscontactphone type: string example: '+18005550100' messageVolume: allOf: - $ref: '#/components/schemas/Volume' description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000; 5,000,000; 10,000,000+' example: 100,000 phoneNumbers: title: Phonenumbers type: array items: $ref: '#/components/schemas/TFPhoneNumber' example: - phoneNumber: '+18773554398' - phoneNumber: '+18773554399' useCase: allOf: - $ref: '#/components/schemas/UseCaseCategories' example: 2FA useCaseSummary: title: Usecasesummary type: string example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal productionMessageContent: title: Productionmessagecontent type: string example: Your Telnyx OTP is XXXX optInWorkflow: title: Optinworkflow type: string example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset optInWorkflowImageURLs: title: Optinworkflowimageurls type: array items: $ref: '#/components/schemas/Url' example: - url: https://telnyx.com/sign-up - url: https://telnyx.com/company/data-privacy additionalInformation: title: Additionalinformation type: string example: This is for security purposes, blah blah blah isvReseller: title: Isvreseller type: string example: 'Yes' webhookUrl: title: Webhookurl type: string example: http://example-webhook.com businessRegistrationNumber: title: Businessregistrationnumber type: string example: 12-3456789 businessRegistrationType: title: Businessregistrationtype type: string example: EIN businessRegistrationCountry: title: Businessregistrationcountry type: string example: US doingBusinessAs: title: Doingbusinessas type: string example: Acme Services entityType: allOf: - $ref: '#/components/schemas/toll-free-verification_EntityType' example: PRIVATE_PROFIT optInConfirmationResponse: title: Optinconfirmationresponse type: string example: You have successfully opted in to receive messages from Acme Corp helpMessageResponse: title: Helpmessageresponse type: string example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com' privacyPolicyURL: title: Privacypolicyurl type: string example: https://example.com/privacy termsAndConditionURL: title: Termsandconditionurl type: string example: https://example.com/terms ageGatedContent: title: Agegatedcontent type: boolean example: false optInKeywords: title: Optinkeywords type: string example: START, YES, SUBSCRIBE campaignVerifyAuthorizationToken: title: Campaignverifyauthorizationtoken type: - string - 'null' maxLength: 500 description: Campaign Verify Authorization Token required for Political use case submissions starting February 17, 2026 example: cv_token_abc123xyz id: title: Id type: string format: uuid verificationRequestId: title: Verificationrequestid type: string verificationStatus: allOf: - $ref: '#/components/schemas/TFVerificationStatus' default: In Progress description: A verification request as it comes out of the database VerificationRequestStatus: title: VerificationRequestStatus required: - businessName - corporateWebsite - businessAddr1 - businessCity - businessState - businessZip - businessContactFirstName - businessContactLastName - businessContactEmail - businessContactPhone - messageVolume - phoneNumbers - useCase - useCaseSummary - productionMessageContent - optInWorkflow - optInWorkflowImageURLs - additionalInformation - id - verificationStatus type: object properties: businessName: title: Businessname type: string example: Telnyx LLC corporateWebsite: title: Corporatewebsite type: string example: http://example.com businessAddr1: title: Businessaddr1 type: string example: 600 Congress Avenue businessAddr2: title: Businessaddr2 type: string example: 14th Floor businessCity: title: Businesscity type: string example: Austin businessState: title: Businessstate type: string example: Texas businessZip: title: Businesszip type: string example: '78701' businessContactFirstName: title: Businesscontactfirstname type: string example: John businessContactLastName: title: Businesscontactlastname type: string example: Doe businessContactEmail: title: Businesscontactemail type: string example: email@example.com businessContactPhone: title: Businesscontactphone type: string example: '+18889809750' messageVolume: allOf: - $ref: '#/components/schemas/Volume' description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000; 5,000,000; 10,000,000+' example: 100,000 phoneNumbers: title: Phonenumbers type: array items: $ref: '#/components/schemas/TFPhoneNumber' example: - phoneNumber: '+18773554398' - phoneNumber: '+18773554399' useCase: allOf: - $ref: '#/components/schemas/UseCaseCategories' example: 2FA useCaseSummary: title: Usecasesummary type: string example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal productionMessageContent: title: Productionmessagecontent type: string example: Your Telnyx OTP is XXXX optInWorkflow: title: Optinworkflow type: string example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset optInWorkflowImageURLs: title: Optinworkflowimageurls type: array items: $ref: '#/components/schemas/Url' example: - url: https://telnyx.com/sign-up - url: https://telnyx.com/company/data-privacy additionalInformation: title: Additionalinformation type: string example: This is for security purposes, blah blah blah isvReseller: title: Isvreseller type: string example: 'Yes' webhookUrl: title: Webhookurl type: string example: http://example-webhook.com businessRegistrationNumber: title: Businessregistrationnumber type: string example: 12-3456789 businessRegistrationType: title: Businessregistrationtype type: string example: EIN businessRegistrationCountry: title: Businessregistrationcountry type: string example: US doingBusinessAs: title: Doingbusinessas type: string example: Acme Services entityType: allOf: - $ref: '#/components/schemas/toll-free-verification_EntityType' example: PRIVATE_PROFIT optInConfirmationResponse: title: Optinconfirmationresponse type: string example: You have successfully opted in to receive messages from Acme Corp helpMessageResponse: title: Helpmessageresponse type: string example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com' privacyPolicyURL: title: Privacypolicyurl type: string example: https://example.com/privacy termsAndConditionURL: title: Termsandconditionurl type: string example: https://example.com/terms ageGatedContent: title: Agegatedcontent type: boolean example: false optInKeywords: title: Optinkeywords type: string example: START, YES, SUBSCRIBE campaignVerifyAuthorizationToken: title: Campaignverifyauthorizationtoken type: - string - 'null' maxLength: 500 description: Campaign Verify Authorization Token required for Political use case submissions starting February 17, 2026 example: cv_token_abc123xyz id: title: Id type: string format: uuid example: eaba9f52-164e-58e0-b002-4f668e18b7ed verificationStatus: allOf: - $ref: '#/components/schemas/TFVerificationStatus' example: Waiting For Customer reason: title: Reason type: string example: Unfortunately, we have to cancel this request as we do not support non tollfree US numbers. createdAt: title: Createdat type: string format: date-time example: '2024-01-23T18:10:02.574Z' updatedAt: title: Updatedat type: string format: date-time example: '2024-01-23T18:10:02.574Z' description: A verification request and its status, suitable for returning to users VerificationStatus: title: VerificationStatus enum: - pending - accepted - invalid - expired - error type: string example: accepted description: The possible statuses of the verification request. VerificationStatusHistoryEntry: title: VerificationStatusHistoryEntry required: - verificationStatus - updatedAt type: object properties: verificationStatus: allOf: - $ref: '#/components/schemas/TFVerificationStatus' description: The verification status at this point in time reason: title: Reason type: - string - 'null' maxLength: 500 description: An explanation of why this request has its current status. example: Unfortunately, we have to cancel this request as we do not support non tollfree US numbers. updatedAt: title: Updatedat type: string format: date-time description: The timestamp at which this status change occurred description: A single entry in the verification request status history VerificationType: title: VerificationType enum: - sms - call - flashcall - whatsapp type: string example: sms description: The possible types of verification. VerifiedNumberRecordType: title: VerifiedNumberRecordType enum: - verified_number type: string example: verified_number description: The possible verified numbers record types. VerifiedNumberResponse: title: VerifiedNumberResponse type: object properties: phone_number: example: '+15551234567' type: string record_type: $ref: '#/components/schemas/VerifiedNumberRecordType' verified_at: example: '2020-09-14T17:03:32.965812' type: string VerifiedNumberResponseDataWrapper: title: VerifiedNumberResponseDataWrapper type: object properties: data: type: object $ref: '#/components/schemas/VerifiedNumberResponse' additionalProperties: true VerifyBrandSmsOtpRequest: title: VerifyBrandSmsOtpRequest required: - otpPin type: object properties: otpPin: title: Otppin type: string description: The OTP PIN received via SMS example: '123456' minLength: 4 maxLength: 10 description: Request body for verifying a Brand SMS OTP VerifyDetailRecord: type: object properties: id: type: string format: uuid example: 0add777f-1549-46f7-84e9-ad7350f6aa97 description: Unique ID of the verification verify_profile_id: type: string format: uuid example: 49000176-1ab2-8bc1-352e-4009f6c37f82 delivery_status: type: string example: pending verification_status: type: string example: pending destination_phone_number: type: string description: E.164 formatted phone number example: '+13124515883' verify_channel_type: description: 'Depending on the type of verification, the `verify_channel_id` points to one of the following channel ids; --- verify_channel_type | verify_channel_id ------------------- | ----------------- sms, psd2 | messaging_id call, flashcall | call_control_id --- ' type: string enum: - sms - psd2 - call - flashcall verify_channel_id: type: string format: uuid example: 5b7a8365-91f3-420a-befc-498d1efd6c20 created_at: type: string format: date-time example: '2021-07-08T00:00:41.000000+00:00' updated_at: type: string format: date-time example: '2021-07-08T00:00:41.000000+00:00' rate: type: string example: '0.002' description: Currency amount per billing unit used to calculate the Telnyx billing costs rate_measured_in: type: string example: number of occurrences description: Billing unit used to calculate the Telnyx billing costs verify_usage_fee: type: string example: '0.002' description: Currency amount for Verify Usage Fee currency: type: string example: USD description: Telnyx account currency used to describe monetary values, including billing costs record_type: type: string example: verification_detail_record default: verification_detail_record required: - record_type VerifyProfileCallResponse: title: VerifyProfileCallResponse type: object properties: messaging_template_id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string description: The message template identifier selected from /verify_profiles/templates app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ code_length: example: 6 type: integer description: The length of the verify code to generate. default: 5 whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 VerifyProfileFlashcallResponse: title: VerifyProfileFlashcallResponse type: object properties: app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 VerifyProfileMessageTemplateResponse: title: VerifyProfileResponse type: object properties: id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string text: example: 'Your {{app_name}} verification code is: {{code}}.' type: string VerifyProfileResponse: title: VerifyProfileResponse type: object properties: id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 format: uuid type: string name: example: Test Profile type: string webhook_url: type: string example: http://example.com/webhook webhook_failover_url: type: string example: http://example.com/webhook/failover daily_spend_limit_enabled: type: boolean default: false description: Whether the daily spend limit is enforced for this verify profile. example: true daily_spend_limit: type: number minimum: 0 description: The maximum daily spend allowed on this verify profile, in USD. example: 100.0 record_type: $ref: '#/components/schemas/VerificationProfileRecordType' created_at: example: '2020-09-14T17:03:32.965812' type: string updated_at: example: '2020-09-14T17:03:32.965812' type: string language: type: string example: en-US sms: type: object $ref: '#/components/schemas/VerifyProfileSMSResponse' additionalProperties: true call: type: object $ref: '#/components/schemas/VerifyProfileCallResponse' additionalProperties: true flashcall: type: object $ref: '#/components/schemas/VerifyProfileFlashcallResponse' additionalProperties: true whatsapp: type: object $ref: '#/components/schemas/VerifyProfileWhatsAppResponse' additionalProperties: true VerifyProfileResponseDataWrapper: title: VerifyProfileResponseDataWrapper type: object properties: data: type: object $ref: '#/components/schemas/VerifyProfileResponse' additionalProperties: true VerifyProfileSMSResponse: title: VerifyProfileSMSResponse type: object properties: messaging_template_id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string description: The message template identifier selected from /verify_profiles/templates app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ default: Telnyx code_length: example: 6 type: integer description: The length of the verify code to generate. default: 5 whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 VerifyProfileWhatsAppResponse: title: VerifyProfileWhatsAppResponse type: object properties: messaging_template_id: example: 0abb5b4f-459f-445a-bfcd-488998b7572d format: uuid type: string description: The message template identifier selected from /verify_profiles/templates app_name: example: Example Secure App description: The name that identifies the application requesting 2fa in the verification message. type: string pattern: ^[A-Za-z0-9 -]{1,30}$ code_length: example: 6 type: integer description: The length of the verify code to generate. default: 5 whitelisted_destinations: description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional. example: - US - CA type: array items: description: ISO 3166-1 alpha-2 country code type: string pattern: ^[A-Z]{2}$ default_verification_timeout_secs: example: 300 description: For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity. type: integer default: 300 waba_id: example: '1234567890' type: - string - 'null' description: Customer Meta WABA ID for Bring-Your-Own-WABA sending default: null sender_phone_number: example: '+13035551234' type: - string - 'null' description: Phone number registered on the customer WABA to send OTPs from default: null template_id: example: authentication_template_id type: - string - 'null' description: Customer pre-approved authentication template ID registered on Meta default: null VerifyVerificationCodeRequestById: title: VerifyVerificationCodeRequestById type: object properties: code: example: '17686' type: string description: This is the code the user submits for verification. status: enum: - accepted - rejected type: string example: accepted description: Identifies if the verification code has been accepted or rejected. Only permitted if custom_code was used for the verification. VerifyVerificationCodeRequestByPhoneNumber: title: VerifyVerificationCodeRequestByPhoneNumber required: - code - verify_profile_id type: object properties: code: example: '17686' type: string description: This is the code the user submits for verification. verify_profile_id: example: 12ade33a-21c0-473b-b055-b3c836e1c292 type: string format: uuid description: The identifier of the associated Verify profile. VerifyVerificationCodeResponse: title: VerifyVerificationCodeResponse required: - data type: object properties: data: required: - phone_number - response_code type: object properties: phone_number: example: '+13035551234' type: string description: +E164 formatted phone number. response_code: enum: - accepted - rejected type: string example: accepted description: Identifies if the verification code has been accepted or rejected. Vertical: title: Vertical enum: - AGRICULTURE - COMMUNICATION - CONSTRUCTION - EDUCATION - ENERGY - ENTERTAINMENT - FINANCIAL - GAMBLING - GOVERNMENT - HEALTHCARE - HOSPITALITY - HUMAN_RESOURCES - INSURANCE - LEGAL - MANUFACTURING - NGO - POLITICAL - POSTAL - PROFESSIONAL - REAL_ESTATE - RETAIL - TECHNOLOGY - TRANSPORTATION description: Vertical or industry segment of the brand or campaign. example: TECHNOLOGY type: string VideoRegion: type: object properties: x_pos: description: X axis value (in pixels) of the region's upper left corner relative to the upper left corner of the whole room composition viewport. type: integer example: 100 default: 0 y_pos: description: Y axis value (in pixels) of the region's upper left corner relative to the upper left corner of the whole room composition viewport. type: integer example: 100 default: 0 z_pos: description: Regions with higher z_pos values are stacked on top of regions with lower z_pos values type: integer minimum: -99 maximum: 99 example: 1 default: 0 height: description: Height of the video region type: integer minimum: 16 example: 360 width: description: Width of the video region type: integer minimum: 16 example: 480 max_columns: description: Maximum number of columns of the region's placement grid. By default, the region has as many columns as needed to layout all the specified video sources. type: integer minimum: 1 maximum: 1000 example: 3 max_rows: description: Maximum number of rows of the region's placement grid. By default, the region has as many rows as needed to layout all the specified video sources. type: integer minimum: 1 maximum: 1000 example: 3 video_sources: description: Array of video recording ids to be composed in the region. Can be "*" to specify all video recordings in the session type: array items: type: string format: uuid example: 7b61621f-62e0-4aad-ab11-9fd19e272e73 VirtualCrossConnect: allOf: - $ref: '#/components/schemas/Record' - $ref: '#/components/schemas/Interface' - type: object title: VirtualCrossConnect properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: virtual_cross_connect cloud_provider: type: string enum: - aws - azure - gce description: The Virtual Private Cloud with which you would like to establish a cross connect. example: aws cloud_provider_region: type: string description: The region where your Virtual Private Cloud hosts are located.

The available regions can be found using the /virtual_cross_connect_regions endpoint. example: us-east-1 bgp_asn: type: number description: The Border Gateway Protocol (BGP) Autonomous System Number (ASN). If null, value will be assigned by Telnyx. example: 1234 bandwidth_mbps: type: number description: The desired throughput in Megabits per Second (Mbps) for your Virtual Cross Connect.

The available bandwidths can be found using the /virtual_cross_connect_regions endpoint. example: 50 primary_enabled: type: boolean description: Indicates whether the primary circuit is enabled. Setting this to `false` will disable the circuit. example: true readOnly: true primary_cloud_account_id: type: string description: The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud provider. example: '123456789012' primary_telnyx_ip: type: string description: The IP address assigned to the Telnyx side of the Virtual Cross Connect.

If none is provided, one will be generated for you.

This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted. example: 169.254.0.1 primary_cloud_ip: type: string description: The IP address assigned for your side of the Virtual Cross Connect.

If none is provided, one will be generated for you.

This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted. example: 169.254.0.2 primary_bgp_key: type: string description: The authentication key for BGP peer configuration. example: yFV4wEPtPVPfDUGLWiyQzwga secondary_enabled: type: boolean description: Indicates whether the secondary circuit is enabled. Setting this to `false` will disable the circuit. example: true readOnly: true secondary_cloud_account_id: type: string description: The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud provider.

This attribute is only necessary for GCE. example: '' secondary_telnyx_ip: type: string description: The IP address assigned to the Telnyx side of the Virtual Cross Connect.

If none is provided, one will be generated for you.

This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted. example: 169.254.0.3 secondary_cloud_ip: type: string description: The IP address assigned for your side of the Virtual Cross Connect.

If none is provided, one will be generated for you.

This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted. example: 169.254.0.4 secondary_bgp_key: type: string description: The authentication key for BGP peer configuration. example: ge1lONeK9RcA83uuWaw9DvZy VirtualCrossConnectCombined: allOf: - $ref: '#/components/schemas/VirtualCrossConnectCreate' - $ref: '#/components/schemas/VirtualCrossConnectPatch' - $ref: '#/components/schemas/RegionOut' VirtualCrossConnectCoverage: allOf: - type: object title: VirtualCrossConnectCoverage properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: virtual_cross_connects_coverage location: $ref: '#/components/schemas/netapps_Location' cloud_provider: type: string enum: - aws - azure - gce description: The Virtual Private Cloud with which you would like to establish a cross connect. example: aws cloud_provider_region: type: string description: The region where your Virtual Private Cloud hosts are located. Should be identical to how the cloud provider names region, i.e. us-east-1 for AWS but Frankfurt for Azure example: us-east-1 available_bandwidth: type: array description: The available throughput in Megabits per Second (Mbps) for your Virtual Cross Connect. items: type: number example: - 50 - 100 - 200 - 500 VirtualCrossConnectCreate: allOf: - $ref: '#/components/schemas/VirtualCrossConnect' - $ref: '#/components/schemas/RegionIn' - type: object title: VirtualCrossConnectCreate required: - network_id - region_code - cloud_provider - cloud_provider_region - bgp_asn - primary_cloud_account_id VirtualCrossConnectPatch: allOf: - type: object title: VirtualCrossConnectPatch properties: primary_enabled: type: boolean description: Indicates whether the primary circuit is enabled. Setting this to `false` will disable the circuit. example: true primary_routing_announcement: description: Whether the primary BGP route is being announced. type: boolean example: false primary_cloud_ip: type: string description: The IP address assigned for your side of the Virtual Cross Connect.

If none is provided, one will be generated for you.

This value can not be patched once the VXC has bene provisioned. example: 169.254.0.2 secondary_enabled: type: boolean description: Indicates whether the secondary circuit is enabled. Setting this to `false` will disable the circuit. example: true secondary_routing_announcement: description: Whether the secondary BGP route is being announced. type: boolean example: false secondary_cloud_ip: type: string description: The IP address assigned for your side of the Virtual Cross Connect.

If none is provided, one will be generated for you.

This value can not be patched once the VXC has bene provisioned. example: 169.254.0.4 VisionTool: description: '(BETA) Lets the assistant look at recent image frames the client sent into the conversation (for example webcam or screen-share frames). Frames are sent with `conversation.item.create` and `item.buffer: true`; they never trigger a response on their own. The assistant decides when to look and which frames it needs. Requires a model that supports image input.' properties: type: type: string enum: - vision shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true vision: $ref: '#/components/schemas/VisionToolParams' type: object required: - type title: VisionTool VisionToolParams: properties: max_frame_age_secs: type: integer minimum: 1 default: 10 description: Frames received longer ago than this many seconds are not shown to the assistant, so it never describes a frozen or disconnected camera as live. type: object title: VisionToolParams Voice: type: object description: A voice available for text-to-speech synthesis. properties: provider: type: string description: The TTS provider. name: type: string description: Voice name. voice_id: type: string description: Voice identifier. language: type: string description: Language code. gender: type: string description: Voice gender. hosted: type: boolean description: Whether this voice runs on Telnyx-hosted infrastructure (`true`) or is provided by a third-party vendor (`false`). VoiceCloneData: type: object description: A voice clone object. properties: record_type: type: string enum: - voice_clone description: Identifies the resource type. id: type: string format: uuid description: Unique identifier for the voice clone. source_voice_design_id: type: - string - 'null' format: uuid description: UUID of the source voice design. `null` for upload-based clones. source_voice_design_version: type: - integer - 'null' description: Version of the source voice design used. `null` for upload-based clones. name: type: string description: Name of the voice clone. language: type: - string - 'null' description: ISO 639-1 language code of the voice clone. gender: type: - string - 'null' enum: - male - female - neutral - null description: Gender of the voice clone. label: type: - string - 'null' description: Voice style description. If not explicitly set on upload, falls back to the source design's prompt text. created_at: type: string format: date-time description: Timestamp when the voice clone was created. updated_at: type: string format: date-time description: Timestamp when the voice clone was last updated. provider: type: string enum: - telnyx - minimax - Telnyx - Minimax description: Voice synthesis provider used for this clone. provider_supported_models: type: array items: type: string description: List of TTS model identifiers supported by this clone's provider. provider_voice_id: type: - string - 'null' description: Provider-specific voice identifier used for TTS synthesis. May differ from the clone UUID depending on the provider and model. model_id: type: string enum: - Qwen3TTS - Ultra - 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 — no `ModelId` segment." type: string default: Telnyx.KokoroTTS.af example: Telnyx.KokoroTTS.af VoiceDesignData: type: object description: A voice design object with full version detail. properties: record_type: type: string enum: - voice_design description: Identifies the resource type. id: type: string format: uuid description: Unique identifier for the voice design. name: type: string description: Name of the voice design. version: type: integer description: Version number of this voice design. text: type: string description: Sample text used to synthesize this version. prompt: type: string description: Natural language prompt used to define the voice style for this version. voice_sample_size: type: integer description: Size of the voice sample audio in bytes. version_created_at: type: string format: date-time description: Timestamp when this specific version was created. created_at: type: string format: date-time description: Timestamp when the voice design was first created. updated_at: type: string format: date-time description: Timestamp when the voice design was last updated. provider: type: - string - 'null' enum: - telnyx - minimax - Telnyx - Minimax - null description: Voice synthesis provider used for this design. provider_supported_models: type: array items: type: string description: List of TTS model identifiers supported by this design's provider (e.g. `Qwen3TTS`, `speech-02-turbo`). provider_voice_id: type: - string - 'null' description: Provider-specific voice identifier. For Telnyx designs this is the design version ID; for Minimax it is the Minimax-assigned voice ID. VoiceDesignListResponse: type: object description: Paginated list of voice designs. properties: data: type: array items: $ref: '#/components/schemas/VoiceDesignSummaryData' description: Array of voice design summary objects. meta: $ref: '#/components/schemas/voice-designs_PaginationMeta' VoiceDesignRequest: type: object description: Request body for creating a new voice design or adding a version to an existing one. Omit `voice_design_id` to create a new design; include it to add a new version. required: - text - prompt properties: name: type: string minLength: 1 maxLength: 255 description: Name for the voice design. Required when creating a new design (`voice_design_id` is not provided); ignored when adding a version. Cannot be a UUID. voice_design_id: type: string format: uuid description: ID of an existing voice design to add a new version to. When provided, a new version is created instead of a new design. text: type: string description: Sample text to synthesize for this voice design. prompt: type: string description: Natural language description of the voice style, e.g. 'Speak in a warm, friendly tone with a slight British accent'. language: type: string default: Auto description: 'Language for synthesis. Supported values: Auto, Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian. Defaults to Auto.' temperature: type: number format: float minimum: 0.0 maximum: 2.0 description: 'Sampling temperature controlling randomness. Higher values produce more varied output. Default: 0.9.' top_k: type: integer minimum: 1 maximum: 1000 description: 'Top-k sampling parameter — limits the token vocabulary considered at each step. Default: 50.' top_p: type: number format: float minimum: 0.0 maximum: 1.0 description: 'Top-p (nucleus) sampling parameter — cumulative probability cutoff for token selection. Default: 1.0.' repetition_penalty: type: number format: float minimum: 1.0 maximum: 2.0 description: 'Repetition penalty to reduce repeated patterns in generated audio. Default: 1.05.' max_new_tokens: type: integer minimum: 100 maximum: 4096 description: 'Maximum number of tokens to generate. Default: 2048.' provider: type: string enum: - telnyx - minimax - Telnyx - Minimax default: telnyx description: Voice synthesis provider. `telnyx` uses the Qwen3TTS model; `minimax` uses the Minimax speech models. Case-insensitive. Defaults to `telnyx`. example: name: friendly-narrator text: Hello, welcome to our service. prompt: Speak in a warm, friendly tone language: Auto provider: telnyx VoiceDesignResponse: type: object description: Response envelope for a single voice design with full version detail. properties: data: $ref: '#/components/schemas/VoiceDesignData' example: data: record_type: voice_design id: 550e8400-e29b-41d4-a716-446655440000 name: friendly-narrator version: 1 text: Hello, welcome. prompt: Speak in a warm tone voice_sample_size: 48000 version_created_at: '2024-01-01T00:00:00Z' created_at: '2024-01-01T00:00:00Z' updated_at: '2024-01-01T00:00:00Z' provider: Telnyx provider_supported_models: - Qwen3TTS provider_voice_id: 550e8400-e29b-41d4-a716-446655440000 VoiceDesignSummaryData: type: object description: A summarized voice design object (without version-specific fields). properties: record_type: type: string enum: - voice_design description: Identifies the resource type. id: type: string format: uuid description: Unique identifier for the voice design. name: type: string description: Name of the voice design. created_at: type: string format: date-time description: Timestamp when the voice design was first created. updated_at: type: string format: date-time description: Timestamp when the voice design was last updated. provider: type: - string - 'null' enum: - telnyx - minimax - Telnyx - Minimax - null description: Voice synthesis provider used for this design. provider_supported_models: type: array items: type: string description: List of TTS model identifiers supported by this design's provider. VoiceDesignUpdateRequest: type: object description: Request body for renaming a voice design. required: - name properties: name: type: string minLength: 1 maxLength: 255 description: New name for the voice design. example: name: updated-narrator VoiceDesignUpdatedResponse: type: object description: Response envelope for a voice design after a rename operation (no version-specific fields). properties: data: $ref: '#/components/schemas/VoiceDesignSummaryData' example: data: record_type: voice_design id: 550e8400-e29b-41d4-a716-446655440000 name: updated-narrator created_at: '2024-01-01T00:00:00Z' updated_at: '2024-01-02T00:00:00Z' VoiceSdkCallReport: type: object description: A raw call report stats JSON payload. The schema is intentionally permissive because Voice SDK clients can add fields over time. properties: call_id: type: string format: uuid description: Unique call identifier. call_report_id: type: string description: User-scoped storage grouping identifier derived from the authenticated user. This is not a unique per-call report identifier and may be shared by multiple calls for the same user. user_id: type: string format: uuid description: Authenticated user that owns the call report. organization_id: type: string format: uuid description: Organization associated with the stored call report when provided by the Voice SDK reporting path. voice_sdk_id: type: string description: Voice SDK instance identifier. voice_sdk_session_id: type: string description: Voice SDK session correlation identifier used to group stats segments for the same SDK session. voice_sdk_id_decoded: type: object additionalProperties: true description: Decoded Voice SDK identifier metadata emitted by voice-sdk-proxy when available. user_agent: type: string description: Voice SDK user agent string reported by the client. This is the preferred SDK/platform/version dimension when present. version: type: string description: Legacy SDK version value when the client reports one separately from the user agent. telnyx_session_id: type: string description: Telnyx RTC session identifier for correlating the report with Voice SDK signaling and media-session logs. telnyx_leg_id: type: string description: Telnyx call leg identifier for correlating the report with call-control, SIP, and media troubleshooting data. summary: type: object additionalProperties: true description: High-level call metadata. stats: $ref: '#/components/schemas/VoiceSdkCallReportStats' logs: $ref: '#/components/schemas/VoiceSdkCallReportLogs' flushReason: type: object additionalProperties: true description: Reason the SDK flushed this stats report segment, for example an intermediate socket-close flush. segment: type: integer description: Zero-based stats segment index when the SDK sends segmented or intermediate reports. stored_at: type: string format: date-time description: Time when the call report was stored. created_at: type: string format: date-time description: Creation timestamp when present. additionalProperties: true VoiceSdkCallReportListResponse: type: object description: Paginated raw Voice SDK call report stats payloads as stored by voice-sdk-debug. properties: data: type: array items: $ref: '#/components/schemas/VoiceSdkCallReport' meta: $ref: '#/components/schemas/voice-sdk-debug_PaginationMeta' required: - data - meta VoiceSdkCallReportLogEntry: type: object description: A raw Voice SDK log entry. Additional SDK-specific fields may be present. properties: timestamp: type: string format: date-time description: Time when the log entry was emitted. level: type: string description: Log level emitted by the SDK. enum: - debug - info - warn - error message: type: string description: Log message. context: type: object additionalProperties: true description: Raw structured context attached to the log entry. additionalProperties: true VoiceSdkCallReportLogs: description: Raw logs payload emitted by the Voice SDK and stored without normalization. Live responses commonly return an array of log entries, but object-shaped log payloads are also allowed for compatibility. oneOf: - type: array description: Raw log entries emitted by the Voice SDK. items: $ref: '#/components/schemas/VoiceSdkCallReportLogEntry' - type: object description: Raw logs object emitted by the Voice SDK when logs are grouped under an entries field. properties: entries: type: array description: Raw log entries when the SDK groups logs under an entries field. items: $ref: '#/components/schemas/VoiceSdkCallReportLogEntry' additionalProperties: true VoiceSdkCallReportStats: description: Raw stats payload emitted by the Voice SDK and stored without normalization. The exact shape can vary by SDK platform and version. Live responses commonly return an array of interval snapshots, but object-shaped stats payloads are also allowed for compatibility. oneOf: - type: array description: Raw interval stats snapshots emitted by the Voice SDK. items: type: object additionalProperties: true description: Raw stats snapshot. It may include WebRTC RTCStatsReport-style entries and audio, connection, ICE, or transport metrics. - type: object description: Raw stats object emitted by the Voice SDK. properties: audio: type: object additionalProperties: true description: Raw audio stats such as inbound/outbound packet, byte, jitter, packet-loss, bitrate, and audio-level metrics. connection: type: object additionalProperties: true description: Raw connection stats such as round-trip time, packets, and bytes sent or received. ice: type: object additionalProperties: true description: Raw ICE candidate-pair information, including selected pair, local/remote candidates, state, and nomination data when provided by the SDK. transport: type: object additionalProperties: true description: Raw transport stats such as ICE state, DTLS state, SRTP cipher, TLS version, and selected-candidate-pair changes. additionalProperties: true VoiceSdkCallReportV2Error: type: object description: Standard Telnyx API v2 error object. properties: code: type: string description: Telnyx error code. example: '10015' title: type: string description: Short, human-readable error title. example: Bad Request detail: type: string description: Human-readable details about the error. example: 'Missing required query parameter: call_id.' source: type: object description: Reference to the request field that caused the error. properties: parameter: type: string description: Query parameter that caused the error. example: call_id pointer: type: string description: JSON pointer to the request body field that caused the error. additionalProperties: true meta: type: object description: Additional error metadata. additionalProperties: true properties: url: type: string format: uri description: Link to error documentation. example: https://developers.telnyx.com/docs/overview/errors/10015 required: - code - title - detail additionalProperties: true VoiceSdkCallReportV2ErrorResponse: type: object description: Standard Telnyx API v2 error response envelope. properties: errors: type: array items: $ref: '#/components/schemas/VoiceSdkCallReportV2Error' required: - errors additionalProperties: true VoiceSdkCallReportsResponse: type: array description: Raw Voice SDK call report stats payloads as stored by voice-sdk-debug. items: $ref: '#/components/schemas/VoiceSdkCallReport' VoiceSettings: properties: voice: type: string description: 'The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API. To use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx..` (e.g. Telnyx.KokoroTTS.af_heart). The voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.' voice_speed: type: number default: 1 description: The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected by the synthesis engine. api_key_ref: type: string description: 'The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.' temperature: type: number default: 0.5 description: Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs. similarity_boost: type: number default: 0.75 description: Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs. use_speaker_boost: type: boolean default: true description: Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs. style: type: number default: 0 description: Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs. speed: type: number default: 1.0 description: Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs. language_boost: type: - string - 'null' description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices. enum: - null - auto - Chinese - Chinese,Yue - English - Arabic - Russian - Spanish - French - Portuguese - German - Turkish - Dutch - Ukrainian - Vietnamese - Indonesian - Japanese - Italian - Korean - Thai - Polish - Romanian - Greek - Czech - Finnish - Hindi - Bulgarian - Danish - Hebrew - Malay - Persian - Slovak - Swedish - Croatian - Filipino - Hungarian - Norwegian - Slovenian - Catalan - Nynorsk - Tamil - Afrikaans default: null expressive_mode: type: boolean default: false description: Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices. background_audio: description: Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving. oneOf: - type: object properties: type: type: string enum: - predefined_media description: Select from predefined media options. value: type: string enum: - silence - office default: silence description: The predefined media to use. `silence` disables background audio. volume: type: number minimum: 0.1 maximum: 1.0 multipleOf: 0.1 default: 1.0 description: Volume level for the predefined background audio. Supports values from 0.1 to 1.0 in 0.1 increments. required: - type - value - type: object properties: type: type: string enum: - media_url description: Provide a direct URL to an MP3 file. The audio will loop during the call. value: type: string format: uri description: HTTPS URL to an MP3 file. required: - type - value - type: object properties: type: type: string enum: - media_name description: Reference a previously uploaded media by its name from Telnyx Media Storage. value: type: string description: The `name` of a media asset created via [Media Storage API](https://developers.telnyx.com/api/media-storage/create-media-storage). The audio will loop during the call. required: - type - value type: object required: - voice VoicemailPrefResponse: type: object example: enabled: true pin: '1234' greeting: mode: custom_greeting media_name: my_voicemail_greeting properties: enabled: type: boolean example: true description: Whether voicemail is enabled. pin: type: string example: '1234' description: The pin used for the voicemail. greeting: type: object description: Controls the greeting a caller hears before leaving a voicemail. Set `mode` to `default` to play the standard system greeting, or to `custom_greeting` to play your own audio. When `mode` is `custom_greeting`, `media_name` is required and must reference an audio file already uploaded to your account through the Media Storage API. properties: mode: type: string enum: - default - custom_greeting default: default example: custom_greeting description: The greeting mode. `default` plays the standard system greeting. `custom_greeting` plays the audio referenced by `media_name`. media_name: type: - string - 'null' example: my_voicemail_greeting description: The name of the media file to play as the greeting. Required when `mode` is `custom_greeting`; ignored when `mode` is `default`. The value must match the `media_name` of a file you previously uploaded with the Media Storage API (`POST /v2/media`). VoicemailRequest: type: object properties: pin: type: string example: '1234' description: The pin used for voicemail enabled: type: boolean example: true description: Whether voicemail is enabled. greeting: type: object description: Controls the greeting a caller hears before leaving a voicemail. Set `mode` to `default` to play the standard system greeting, or to `custom_greeting` to play your own audio. When `mode` is `custom_greeting`, `media_name` is required and must reference an audio file already uploaded to your account through the Media Storage API. properties: mode: type: string enum: - default - custom_greeting default: default example: custom_greeting description: The greeting mode. `default` plays the standard system greeting. `custom_greeting` plays the audio referenced by `media_name`. media_name: type: - string - 'null' example: my_voicemail_greeting description: The name of the media file to play as the greeting. Required when `mode` is `custom_greeting`; ignored when `mode` is `default`. The value must match the `media_name` of a file you previously uploaded with the Media Storage API (`POST /v2/media`). example: enabled: true pin: '1234' greeting: mode: custom_greeting media_name: my_voicemail_greeting VoicesResponse: type: object description: List of available voices. properties: voices: type: array items: $ref: '#/components/schemas/Voice' Volume: title: Volume enum: - '10' - '100' - 1,000 - 10,000 - 100,000 - 250,000 - 500,000 - 750,000 - 1,000,000 - 5,000,000 - 10,000,000+ type: string description: Message Volume Enums WabaResponse: type: object properties: id: type: string format: uuid description: Internal ID of Whatsapp business account record_type: type: string example: whatsapp_business_account name: type: string description: Name of Whatsapp business account waba_id: type: string description: WABA ID of Whatsapp business account status: type: string description: Status of Whatsapp business account phone_numbers_count: type: integer description: Count of phone numbers associated with Whatsapp business account business_verification_status: type: string description: Business verification status of Whatsapp business account account_review_status: type: string description: Account review status of Whatsapp business account country: type: string description: Country associated with Whatsapp business account created_at: type: string format: date-time WabaSettings: type: object properties: id: type: string format: uuid description: Internal ID of Whatsapp business account record_type: type: string example: whatsapp_business_account_settings name: type: string timezone: type: string example: America/Chicago webhook_url: type: string format: url description: URL to receive Whatsapp events webhook_failover_url: type: string format: url description: Failover URL to receive Whatsapp events webhook_enabled: type: boolean description: Enable/disable receiving Whatsapp events webhook_events: type: array items: type: string description: Whatsapp event to subscribe to updated_at: type: string format: date-time WdrReport: type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string readOnly: true example: detail_records_report created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' start_time: description: ISO 8601 formatted date-time indicating the start time. type: string example: '2018-02-02T22:25:27.521Z' end_time: description: ISO 8601 formatted date-time indicating the end time. type: string example: '2018-02-02T22:25:27.521Z' status: description: Indicates the status of the report, which is updated asynchronously. type: string enum: - pending - complete - failed - deleted example: pending report_url: description: The URL where the report content, when generated, will be published to. type: string example: http://example.com WdrReportRequest: type: object properties: start_time: description: ISO 8601 formatted date-time indicating the start time. type: string example: '2018-02-02T22:25:27.521Z' end_time: description: ISO 8601 formatted date-time indicating the end time. type: string example: '2018-02-02T22:25:27.521Z' example: start_time: '2018-02-02T22:25:27.521Z' end_time: '2018-02-02T22:25:27.521Z' WebSearchError: type: object properties: error: type: object required: - message properties: message: type: string description: Human-readable error message. details: type: object additionalProperties: true description: Additional error details (e.g. validation field errors). WebSearchRequest: type: object required: - query properties: query: type: string minLength: 1 maxLength: 2000 description: The search query text. example: latest AI agent frameworks count: type: integer minimum: 1 maximum: 100 description: Number of results to return (1-100). example: 10 country: type: string minLength: 2 maxLength: 2 description: Two-letter country code (ISO 3166-1 alpha-2) to bias results. example: US safesearch: type: string enum: - 'off' - moderate - strict description: Safe search filter level. example: moderate freshness: type: string maxLength: 20 description: 'Time-based filter for results. Common values: `day`, `week`, `month`, `year`.' example: week include_domains: type: array items: type: string maxItems: 50 description: Restrict results to these domains (bare hostnames, e.g. `arxiv.org`). example: - arxiv.org - github.com exclude_domains: type: array items: type: string maxItems: 50 description: Exclude results from these domains (bare hostnames, e.g. `pinterest.com`). example: - pinterest.com livecrawl: type: boolean description: When true, the provider crawls pages in real-time for fresh content. The boolean is translated to the provider's internal enum internally; callers always pass `true` or `false`. example: false WebSearchResponse: type: object properties: results: type: object required: - web properties: web: type: array items: $ref: '#/components/schemas/WebSearchResult' description: Web search results. news: type: array items: $ref: '#/components/schemas/WebSearchResult' description: News search results. Present only when the query surfaces news results. WebSearchResult: type: object required: - url - title - description - snippets properties: url: type: string format: uri description: Result URL. title: type: string description: Result title. description: type: string description: Short description or excerpt. snippets: type: array items: type: string description: Relevant text snippets from the page. thumbnail_url: type: string format: uri description: Thumbnail image URL (if available). favicon_url: type: string format: uri description: Favicon URL (if available). WebhookApiVersion: title: Webhook API Version description: Determines which webhook format will be used, Telnyx API v1 or v2. type: string enum: - '1' - '2' default: '1' example: '1' WebhookEventFailoverUrl: title: Webhook Event Failover URL description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'. type: - string - 'null' format: uri default: '' example: https://failover.example.com WebhookEventUrl: title: Webhook Event URL description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'. type: string format: uri example: https://example.com WebhookPortoutFocDateChanged: type: object properties: id: type: string description: Uniquely identifies the event. format: uuid example: eef3340b-8903-4466-b445-89b697315a3a event_type: type: string description: Identifies the event type enum: - portout.status_changed - portout.foc_date_changed - portout.new_comment example: portout.status_changed portout_id: type: string format: uuid description: Identifies the port-out order associated with the event. example: 9471c873-e3eb-4ca1-957d-f9a451334d52 available_notification_methods: type: array items: type: string enum: - email - webhook description: Indicates the notification methods used. payload_status: type: string description: The status of the payload generation. enum: - created - completed example: created payload: type: object description: The webhook payload for the portout.foc_date_changed event properties: id: type: string format: uuid example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c description: Identifies the port-out order that have the FOC date changed. user_id: type: string description: Identifies the organization that port-out order belongs to. example: 0e19c89e-f0ce-458a-a36c-3c60bc2014b1 foc_date: type: string description: ISO 8601 formatted date indicating the new FOC date. example: '2021-03-19T10:07:15.527Z' format: date-time record_type: type: string example: portout_event description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' WebhookPortoutNewComment: type: object properties: id: type: string description: Uniquely identifies the event. format: uuid example: eef3340b-8903-4466-b445-89b697315a3a event_type: type: string description: Identifies the event type enum: - portout.status_changed - portout.foc_date_changed - portout.new_comment example: portout.status_changed portout_id: type: string format: uuid description: Identifies the port-out order associated with the event. example: 9471c873-e3eb-4ca1-957d-f9a451334d52 available_notification_methods: type: array items: type: string enum: - email - webhook description: Indicates the notification methods used. payload_status: type: string description: The status of the payload generation. enum: - created - completed example: created payload: type: object description: The webhook payload for the portout.new_comment event properties: id: type: string format: uuid example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c description: Identifies the comment that was added to the port-out order. portout_id: type: string format: uuid example: d26109e5-0605-4671-a235-d3c649cc8406 description: Identifies the port-out order that the comment was added to. user_id: type: string format: uuid example: 1c45c968-c2e0-4559-b1dd-db073962fc61 description: Identifies the user that added the comment. comment: type: string description: The body of the comment. example: This is a comment. record_type: type: string example: portout_event description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' WebhookPortoutStatusChanged: type: object properties: id: type: string description: Uniquely identifies the event. format: uuid example: eef3340b-8903-4466-b445-89b697315a3a event_type: type: string description: Identifies the event type enum: - portout.status_changed - portout.foc_date_changed - portout.new_comment example: portout.status_changed portout_id: type: string format: uuid description: Identifies the port-out order associated with the event. example: 9471c873-e3eb-4ca1-957d-f9a451334d52 available_notification_methods: type: array items: type: string enum: - email - webhook description: Indicates the notification methods used. payload_status: type: string description: The status of the payload generation. enum: - created - completed example: created payload: type: object description: The webhook payload for the portout.status_changed event properties: id: type: string format: uuid example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c description: Identifies the port out that was moved. status: type: string description: The new status of the port out. enum: - pending - authorized - ported - rejected - rejected-pending - canceled example: authorized phone_numbers: type: array description: Phone numbers associated with this port-out order items: type: string description: E164 formatted phone number example: - '+35312345678' carrier_name: type: string description: Carrier the number will be ported out to example: Testing Carrier spid: type: string description: The new carrier SPID. example: 987H user_id: type: string format: uuid description: Identifies the user that the port-out order belongs to. example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c subscriber_name: type: string description: The name of the port-out's end user. example: John Doe rejection_reason: type: - string - 'null' description: The reason why the order is being rejected by the user. If the order is authorized, this field can be left null example: null attempted_pin: type: string description: The PIN that was attempted to be used to authorize the port out. example: '1234' record_type: type: string example: portout_event description: Identifies the type of the resource. readOnly: true created_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. example: '2021-03-19T10:07:15.527000Z' updated_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was updated. example: '2021-03-19T10:07:15.527000Z' WebhookTimeoutSecs: title: Webhook Timeout Secs type: - integer - 'null' description: Specifies how many seconds to wait before timing out a webhook. minimum: 0 maximum: 30 default: null example: 25 WebhookTool: properties: type: type: string enum: - webhook timeout_ms: type: integer default: 5000 maximum: 60000 description: The maximum number of milliseconds to wait for the webhook to respond before the tool call is aborted. Set this at the tool level, as a sibling of `type` — a `timeout_ms` nested inside the `webhook` object is not applied, and the tool runs at this default instead. webhook: $ref: '#/components/schemas/CallControlWebhookToolParams' type: object required: - type - webhook title: WebhookTool WebhookToolParams: properties: name: type: string description: The name of the tool. description: type: string description: The description of the tool. url: description: 'The URL of the external tool to be called. This URL is going to be used by the assistant. The URL can be templated like: `https://example.com/api/v1/{id}`, where `{id}` is a placeholder for a value that will be provided by the assistant if `path_parameters` are provided with the `id` attribute.' type: string example: https://example.com/api/v1/function method: description: The HTTP method to be used when calling the external tool. type: string enum: - GET - POST - PUT - DELETE - PATCH default: POST headers: description: The headers to be sent to the external tool. type: array items: type: object properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `Bearer {{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret as the bearer token. [Telnyx signature headers](https://developers.telnyx.com/docs/voice/programmable-voice/voice-api-webhooks) will be automatically added to the request. type: string body_parameters: description: The body parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the body of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format type: object properties: properties: description: The properties of the body parameters. type: object additionalProperties: true required: description: The required properties of the body parameters. type: array items: type: string type: type: string enum: - object example: properties: age: description: The age of the customer. type: integer location: description: The location of the customer. type: string required: - age - location type: object path_parameters: description: The path parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the path of the request if the URL contains a placeholder for a value. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format type: object properties: properties: description: The properties of the path parameters. type: object additionalProperties: true required: description: The required properties of the path parameters. type: array items: type: string type: type: string enum: - object example: properties: id: description: The id of the customer. type: string required: - id type: object query_parameters: description: The query parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the query of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format type: object properties: properties: description: The properties of the query parameters. type: object additionalProperties: true required: description: The required properties of the query parameters. type: array items: type: string type: type: string enum: - object example: properties: page: description: The page number. type: integer required: - page type: object preset_body_fields: type: object additionalProperties: true description: Body fields supplied by the assistant configuration rather than by the model. They are never advertised in the tool definition, so the LLM can neither see nor set them, and they take precedence over a `body_parameters` value of the same name. Values support mustache templating, so they can hold dynamic variables (`{{customer_id}}`) and integration secrets (`{{#integration_secret}}my-secret{{/integration_secret}}`). Not sent on `GET` requests, which carry no body. example: account_id: '{{customer_id}}' source: telnyx-assistant preset_query_params: type: object additionalProperties: true description: Query string parameters supplied by the assistant configuration rather than by the model. They are never advertised in the tool definition, so the LLM can neither see nor set them, and they take precedence over a `query_parameters` value of the same name. Values support mustache templating, so they can hold dynamic variables (`{{telnyx_end_user_target}}`) and integration secrets (`{{#integration_secret}}my-secret{{/integration_secret}}`). Unlike values templated directly into the `url`, these are percent-encoded, so a value such as `+15551234567` survives the round trip. example: caller: '{{telnyx_end_user_target}}' channel: voice async: type: boolean default: false description: If async, the assistant will move forward without waiting for your server to respond. async_timeout_ms: type: integer minimum: 1 maximum: 15000 description: Maximum time in milliseconds that the conversation worker waits for an async webhook response before returning "Submitted" to the LLM. If unset, the platform default (currently 300ms) is used. store_fields_as_variables: type: array description: A list of mappings that extract values from the webhook response and store them as dynamic variables. Each mapping specifies a dynamic variable name and a dot-notation path to the value in the response body. items: type: object required: - name - value_path properties: name: type: string minLength: 1 description: The name of the dynamic variable to store the extracted value in. value_path: type: string minLength: 1 description: A dot-notation path to the value in the webhook response body (e.g. 'customer.name' or 'id'). additionalProperties: false messages: type: array description: Filler messages spoken while a synchronous webhook request is in progress. `request_start` messages are spoken immediately when the request begins. `request_response_delayed` messages are spoken after `timing_ms` has elapsed only if the webhook response is still pending. Filler messages are not used for asynchronous webhooks. items: oneOf: - title: WebhookToolRequestStartMessage type: object required: - type - content properties: type: type: string const: request_start description: Speak the filler message immediately when the webhook request begins. content: type: string minLength: 1 description: The text the assistant speaks. timing_ms: type: integer minimum: 100 maximum: 120000 description: An optional delay value. This value is ignored for `request_start` messages. additionalProperties: false - title: WebhookToolRequestResponseDelayedMessage type: object required: - type - content - timing_ms properties: type: type: string const: request_response_delayed description: Speak the filler message after the configured delay if the webhook response is still pending. content: type: string minLength: 1 description: The text the assistant speaks. timing_ms: type: integer minimum: 100 maximum: 120000 description: The delay in milliseconds from the start of the webhook request. additionalProperties: false example: - type: request_start content: Let me look that up for you. - type: request_response_delayed content: Still working on that. timing_ms: 5000 type: object required: - url - name - description title: WebhookToolParams WebsocketSettings: type: object title: WebsocketSettings description: 'Streams conversation and telephony events to a WebSocket server you host, and accepts messages injected back into the conversation. Telnyx opens the connection as a client, once per conversation. Delivery is best effort throughout: while the connection is down events are dropped rather than queued, and no socket failure is ever allowed to affect the call. Beta feature.' properties: enabled: type: boolean default: false description: Whether Telnyx opens a WebSocket to `url` for each of this assistant's conversations. Defaults to `false`. url: type: string description: The `ws://` or `wss://` endpoint Telnyx connects to. Required when `enabled` is `true`. Must be externally reachable — localhost, private IP ranges and `.local` domains are rejected. auth_ref: type: string description: 'Integration secret identifier whose value Telnyx sends as an `Authorization: Bearer ` header on the upgrade request. Resolved on every connection attempt, so a rotated secret is picked up by the next reconnect.' WhatsappAccountUpdate: type: object required: - record_type - id - event_type - occurred_at - payload properties: record_type: type: string enum: - event id: type: string format: uuid event_type: type: string enum: - whatsapp.account.update occurred_at: type: string format: date-time payload: $ref: '#/components/schemas/WhatsappAccountUpdatePayload' WhatsappAccountUpdateEvent: type: object required: - data properties: data: $ref: '#/components/schemas/WhatsappAccountUpdate' WhatsappAccountUpdatePayload: type: object required: - record_type - waba_id - event properties: record_type: type: string enum: - whatsapp_account waba_id: type: string description: Meta WhatsApp Business Account identifier. event: type: string examples: - ACCOUNT_OFFBOARDED - ACCOUNT_RECONNECTED - PARTNER_REMOVED description: Account event reported by Meta. Coexistence lifecycle values include `ACCOUNT_OFFBOARDED`, `ACCOUNT_RECONNECTED`, and `PARTNER_REMOVED`. Preserve unknown values for forward compatibility. WhatsappCallingRoutingData: type: object properties: record_type: type: string enum: - whatsapp_calling_routing description: Identifies the type of the resource. example: whatsapp_calling_routing phone_number: type: string description: Phone number in E.164 format, with a leading `+`. example: '+13125550100' connection_id: type: - string - 'null' description: ID of the routing connection, or `null` when none is set. example: '1234567890' required: - record_type - phone_number - connection_id WhatsappCallingRoutingFieldErrors: type: object properties: errors: type: object description: Error messages keyed by the field or step that failed. additionalProperties: type: array items: type: string required: - errors WhatsappCallingSettingsData: type: object properties: record_type: type: string example: whatsapp_calling_settings phone_number: type: string description: Phone number in E164 format updated_at: type: string format: date-time enabled: type: boolean description: True if calling is enabled on the phone WhatsappContact: type: object properties: addresses: type: array items: type: object properties: street: type: string city: type: string state: type: string zip: type: string country: type: string country_code: type: string type: type: string birthday: type: string emails: type: array items: type: object properties: email: type: string type: type: string name: type: string org: type: object properties: company: type: string department: type: string title: type: string phones: type: array items: type: object properties: phone: type: string x-format: E+164 type: type: string wa_id: type: string urls: type: array items: type: object properties: url: type: string format: url type: type: string WhatsappConversationWindowData: type: object properties: window_active: type: boolean description: Whether the 24-hour conversation window is currently open example: true window_expires_at: type: - string - 'null' format: date-time description: When the window closes. Null if no active window. example: '2026-06-30T16:00:00Z' last_user_message_at: type: string format: date-time description: Timestamp of the last inbound message that opened the window example: '2026-06-29T15:53:00Z' window_type: type: string description: Window type. Currently always 24h when present. example: 24h WhatsappConversationalComponent: type: object properties: record_type: type: string example: whatsapp_conversational_component phone_number: type: string description: Phone number in E164 format ice_breakers: type: array description: List of ice breakers items: type: string commands: type: array description: List of commands items: type: object properties: command: type: string description: type: string WhatsappCreateTemplateRequest: type: object required: - waba_id - name - category - language - components properties: waba_id: type: string description: The WhatsApp Business Account ID. name: type: string description: Template name. Lowercase letters, numbers, and underscores only. category: type: string enum: - MARKETING - UTILITY - AUTHENTICATION description: 'Template category: AUTHENTICATION, UTILITY, or MARKETING.' language: type: string description: Template language code (e.g. en_US, es, pt_BR). components: type: array description: Template components defining message structure. Passed through to Meta Graph API. Templates with variables must include example values. Supports HEADER, BODY, FOOTER, BUTTONS, CAROUSEL and any future Meta component types. items: oneOf: - $ref: '#/components/schemas/WhatsappTemplateHeaderComponent' - $ref: '#/components/schemas/WhatsappTemplateBodyComponent' - $ref: '#/components/schemas/WhatsappTemplateFooterComponent' - $ref: '#/components/schemas/WhatsappTemplateButtonsComponent' - $ref: '#/components/schemas/WhatsappTemplateCarouselComponent' description: A template component. Additional Meta component types not listed here are also accepted. WhatsappHostedSignup: type: object properties: id: type: string description: Hosted signup ID example: 0192345a-7b8c-7d9e-0f12-3456789abcde record_type: type: string enum: - whatsapp_jwt example: whatsapp_jwt app_id: type: string description: Meta App ID the hosted signup onboards customers into example: '123456789012345' solution_id: type: string description: Meta Partner Solution ID linked to the app. Returned only when creating a hosted signup. example: '987654321098765' created_at: type: string format: date-time example: '2026-07-08T12:00:00Z' expires_at: type: string format: date-time description: When the onboarding URL stops working example: '2026-07-09T12:00:00Z' jwt: type: string description: Signed token embedded in `url` example: eyJhbGciOiJSUzI1NiIs... url: type: string format: uri description: Hosted onboarding URL to share with the end customer example: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs... WhatsappHostedSignupCreateRequest: type: object required: - app_id properties: app_id: type: string description: Meta App ID linked to the Telnyx account. The app must be enabled. example: '123456789012345' expires_at: type: string format: date-time description: When the onboarding URL expires, in RFC 3339 format. Must be in the future and at most 3 days ahead. Defaults to 24 hours after creation. example: '2026-07-09T12:00:00Z' signup_type: type: string enum: - standard - coexistence default: standard description: Onboarding flow the hosted page launches. Use `coexistence` for a number that remains active in the WhatsApp Business app. example: coexistence WhatsappInteractive: type: object properties: type: type: string enum: - cta_url - list - carousel - button - location_request_message action: type: object properties: name: type: string button: type: string buttons: type: array items: type: object properties: type: type: string enum: - reply reply: type: object properties: title: type: string description: button label, 20 character maximum id: type: string description: unique identifier for each button, 256 character maximum catalog_id: type: string product_retailer_id: type: string sections: type: array items: type: object properties: product_items: type: array items: type: object properties: product_retailer_id: type: string rows: type: array items: type: object properties: id: type: string description: arbitrary string identifying the row, 200 character maximum title: type: string description: row title, 24 character maximum description: type: string description: row description, 72 character maximum title: type: string description: section title, 24 character maximum mode: type: string parameters: type: object properties: display_text: type: string description: button label text, 20 character maximum url: type: string format: url description: button URL to load when tapped by the user cards: type: array items: type: object properties: card_index: type: integer description: unique index for each card (0-9) type: type: string enum: - cta_url header: type: object properties: type: type: string enum: - image - video image: $ref: '#/components/schemas/WhatsappMedia' video: $ref: '#/components/schemas/WhatsappMedia' body: type: object properties: text: type: string description: 160 character maximum, up to 2 line breaks action: type: object properties: product_retailer_id: type: string description: the unique retailer ID of the product catalog_id: type: string description: the unique ID of the catalog body: type: object properties: text: type: string description: body text, 1024 character maximum footer: type: object properties: text: type: string description: footer text, 60 character maximum header: type: object properties: document: $ref: '#/components/schemas/WhatsappMedia' image: $ref: '#/components/schemas/WhatsappMedia' video: $ref: '#/components/schemas/WhatsappMedia' text: type: string description: header text, 60 character maximum sub_text: type: string WhatsappLocation: type: object properties: latitude: type: string longitude: type: string name: type: string address: type: string WhatsappMedia: type: object properties: link: type: string description: media URL format: url example: http://example.com/media.jpg caption: type: string description: media caption filename: type: string description: file name with extension voice: type: boolean description: true if voice message WhatsappMessage: required: - from - to - whatsapp_message type: object properties: from: type: string description: Phone number in +E.164 format associated with Whatsapp account example: '+13125551234' to: type: string description: Phone number in +E.164 format example: '+13125551234' whatsapp_message: $ref: '#/components/schemas/WhatsappMessageContent' type: type: string description: Message type - must be set to "WHATSAPP" example: WHATSAPP enum: - WHATSAPP webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url messaging_profile_id: description: Messaging profile ID - required if the 'from' number is not SMS-enabled type: string format: uuid WhatsappMessageContent: type: object properties: audio: $ref: '#/components/schemas/WhatsappMedia' document: $ref: '#/components/schemas/WhatsappMedia' image: $ref: '#/components/schemas/WhatsappMedia' sticker: $ref: '#/components/schemas/WhatsappMedia' video: $ref: '#/components/schemas/WhatsappMedia' interactive: $ref: '#/components/schemas/WhatsappInteractive' location: $ref: '#/components/schemas/WhatsappLocation' contacts: type: array items: $ref: '#/components/schemas/WhatsappContact' reaction: $ref: '#/components/schemas/WhatsappReaction' biz_opaque_callback_data: type: string description: custom data to return with status update type: type: string enum: - audio - document - image - sticker - video - interactive - location - template - reaction - contacts - text text: type: object description: Text message content. Can only be sent within a 24-hour customer service window. properties: body: type: string description: The text message body. example: Hello from Telnyx! preview_url: type: boolean description: Whether to show a URL preview in the message. default: false required: - body template: type: object description: Template message object. Provide either template_id or name + language to identify the template. properties: template_id: type: string description: Telnyx template ID (the id field from template list/get responses). When provided, name and language are resolved automatically. example: 019cd44b-3a1c-781b-956e-bd33e9fd2ac6 name: type: string description: Template name as registered with Meta. Required unless template_id is provided. example: order_confirmation language: type: object description: Template language. Required unless template_id is provided. properties: policy: type: string example: deterministic code: type: string description: Language code (e.g. en_US) example: en_US required: - code components: type: array description: Template parameter values for header, body, and button components. items: type: object properties: type: type: string enum: - header - body - button sub_type: type: string enum: - quick_reply - url index: type: integer description: Button index (required for button components) parameters: type: array items: type: object properties: type: type: string enum: - text - image - video - document - currency - date_time text: type: string WhatsappMessageEcho: type: object required: - record_type - id - event_type - occurred_at - payload properties: record_type: type: string enum: - event id: type: string format: uuid event_type: type: string enum: - message.echo occurred_at: type: string format: date-time payload: $ref: '#/components/schemas/WhatsappMessageEchoPayload' WhatsappMessageEchoEvent: type: object required: - data properties: data: $ref: '#/components/schemas/WhatsappMessageEcho' WhatsappMessageEchoPayload: type: object required: - record_type - direction - origin - id - type - organization_id - messaging_profile_id - from - to - body - cost - errors properties: record_type: type: string enum: - message direction: type: string enum: - outbound description: Indicates that the business sent the message to the WhatsApp user. origin: type: string enum: - whatsapp_business_app description: Identifies the WhatsApp Business app as the source of the message. id: type: string format: uuid description: Telnyx identifier for the mirrored message. type: type: string enum: - WHATSAPP organization_id: type: string format: uuid messaging_profile_id: type: string format: uuid from: type: object required: - phone_number properties: phone_number: type: string description: Coexistence-enabled business phone number in E.164 format. x-format: address carrier: type: string line_type: type: string to: type: string description: WhatsApp user who received the Business app message. x-format: address body: type: object description: Mirrored WhatsApp message content. The content property matches the value of `type`. additionalProperties: true required: - id - foreign_id - timestamp - type properties: from: type: string description: WhatsApp user who received the message. from_user_id: type: string description: Opaque recipient identifier when Meta does not supply a phone number. id: type: string format: uuid description: Telnyx identifier for the mirrored message. foreign_id: type: string description: Meta WhatsApp message identifier, also known as a wamid. timestamp: type: string description: Unix timestamp supplied by Meta. type: type: string description: WhatsApp message content type. tags: type: array items: type: string cost: type: object description: No charge is created for a Business app message echo. properties: amount: type: - string - 'null' currency: type: - string - 'null' received_at: type: string format: date-time webhook_url: type: - string - 'null' format: uri webhook_failover_url: type: - string - 'null' format: uri errors: type: array items: $ref: '#/components/schemas/messaging_Error_0b38e7044b' WhatsappPatchCallingRoutingRequest: type: object required: - connection_id properties: connection_id: type: - string - integer - 'null' description: 'ID of the connection to deliver inbound WhatsApp calls to: a positive integer up to 9223372036854775807, sent as a decimal string or an integer. Send a string to keep large IDs exact. Non-null values are returned as strings. `null` clears the routing.' example: '1234567890' WhatsappPatchCallingSettingsRequest: type: object required: - enabled properties: enabled: type: boolean WhatsappPhoneNumberVerificationRequest: type: object required: - phone_number - display_name properties: phone_number: type: string display_name: type: string verification_method: type: string enum: - sms - voice default: sms language: type: string default: en_US WhatsappPhoneResponse: type: object properties: record_type: type: string example: whatsapp_business_phone_number phone_number: type: string description: Phone number in E164 format phone_number_id: type: string description: Whatsapp phone number ID waba_id: type: string description: WABA ID of Whatsapp business account user_id: type: string description: User ID display_name: type: string quality_rating: type: string description: Whatsapp quality rating status: type: string created_at: type: string format: date-time enabled: type: boolean calling_enabled: type: boolean is_on_biz_app: type: boolean description: Indicates whether the number is connected to both the WhatsApp Business app and Cloud API through WhatsApp Coexistence. coexistence_state: type: - string - 'null' enum: - pending_onboarding - sync_pending - syncing - sync_complete - active - history_declined - sync_deadline_expired - offboarded - disconnected - null description: Current lifecycle state for a coexistence number. This is null for a standard Cloud API number. sync_deadline: type: - string - 'null' format: date-time description: Deadline for initiating the current coexistence synchronization cycle. This is null when no deadline applies. sync_progress: type: - object - 'null' description: Synchronization progress. This object is returned only while a coexistence number is synchronizing. properties: contacts_status: type: string history_status: type: string history_phase: type: - integer - 'null' history_chunk_order: type: - integer - 'null' history_progress: type: - integer - 'null' minimum: 0 maximum: 100 WhatsappProfileData: type: object properties: id: type: string record_type: type: string example: whatsapp_phone_number_profiles phone_number_id: type: string description: Whatsapp phone number ID display_name: type: string profile_photo_url: type: string category: type: string about: type: string maxLength: 139 description: type: string maxLength: 512 email: type: string website: type: string address: type: string profile_id: type: string created_at: type: string format: date-time updated_at: type: string format: date-time WhatsappProfilePhotoData: type: object properties: record_type: type: string example: whatsapp_phone_number_profile_photos phone_number_id: type: string description: Meta phone number ID profile_photo_url: type: string description: URL of the business profile photo (served by Meta's CDN). May be empty if no photo is set. WhatsappProfilePhotoResponse: type: object properties: data: $ref: '#/components/schemas/WhatsappProfilePhotoData' WhatsappReaction: type: object properties: message_id: type: string emoji: type: string WhatsappResendVerificationRequest: type: object properties: verification_method: type: string enum: - sms - voice default: sms WhatsappResponse: type: object properties: data: type: object properties: record_type: type: string example: message direction: type: string example: outbound id: type: string description: message ID example: 4031938e-60e4-4235-a8dd-0b1c55a23e7a type: type: string example: WHATSAPP organization_id: type: string example: 9f61d8e1-7687-4d6d-9cae-9ff682985983 messaging_profile_id: type: string example: 4001781e-626f-4a41-a914-b1b682150f94 from: type: object properties: phone_number: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address status: type: string enum: - received - delivered carrier: type: string description: The carrier of the sender. line_type: type: string description: The line-type of the sender. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' to: $ref: '#/components/schemas/RCSTo' body: $ref: '#/components/schemas/WhatsappMessageContent' encoding: type: string example: utf-8 received_at: type: string format: date-time wait_seconds: type: - number - 'null' format: float description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay. example: 0.5 WhatsappSignupSession: type: object properties: record_type: type: string enum: - whatsapp_session_id session_id: type: string description: Signup session ID user_id: type: string description: Telnyx user ID that owns the signup session state: type: string enum: - SUBSCRIBE_WEBHOOKS - ASSIGNED_USERS - SHARE_CREDIT_LINE - REGISTER_PHONE_NUMBER - ADD_WABA_TO_DB - ADD_PHONE_NUMBERS_TO_DB - COMPLETE description: Current provisioning step, or the step that failed. `REGISTER_PHONE_NUMBER` is skipped for coexistence signups. status: type: string enum: - INCOMPLETE - PENDING - SUCCESS - FAILURE description: '`INCOMPLETE` waits for the Meta signup code, `PENDING` is in progress, `SUCCESS` finished provisioning, and `FAILURE` stopped at `state`.' created_at: type: string format: date-time updated_at: type: string format: date-time waba_id: type: string description: Meta WhatsApp Business Account ID customer_id: type: string description: Tech provider customer reference submitted with the signup errors: type: array items: type: string description: Errors recorded during provisioning WhatsappTemplateBodyComponent: type: object description: The main text content of the message. Supports multiple variable parameters ({{1}}, {{2}}, etc.). Variables cannot be at the start or end. Maximum 1024 characters. required: - type properties: type: type: string enum: - BODY text: type: string description: Body text content. Use {{1}}, {{2}}, etc. for variable placeholders. Required for MARKETING and UTILITY templates. Optional for AUTHENTICATION templates where Meta provides the built-in OTP body. maxLength: 1024 example: type: object description: Sample values for body variables. Required when body text contains parameters. properties: body_text: type: array description: Array containing one array of sample values, one per variable in order. items: type: array items: type: string WhatsappTemplateButtonsComponent: type: object description: Optional interactive buttons. Maximum 3 buttons per template. required: - type - buttons properties: type: type: string enum: - BUTTONS buttons: type: array items: type: object required: - type properties: type: type: string enum: - URL - PHONE_NUMBER - QUICK_REPLY - OTP - COPY_CODE - FLOW text: type: string maxLength: 25 description: Button label text. Maximum 25 characters. Required for URL, PHONE_NUMBER, and QUICK_REPLY buttons. Not required for OTP buttons (Meta supplies the label). url: type: string description: URL for URL-type buttons. Supports one variable ({{1}}). phone_number: type: string description: Phone number in E.164 format. otp_type: type: string enum: - COPY_CODE - ONE_TAP example: type: array items: type: string description: Sample values for URL variable. package_name: type: string description: Android package name. Required for ONE_TAP OTP buttons. signature_hash: type: string description: Android app signing key hash. Required for ONE_TAP OTP buttons. autofill_text: type: string description: Custom autofill button text for ONE_TAP OTP buttons. zero_tap_terms_accepted: type: boolean description: Whether zero-tap terms have been accepted. flow_id: type: string description: Flow ID for FLOW-type buttons. flow_action: type: string enum: - navigate - data_exchange description: Flow action type for FLOW-type buttons. navigate_screen: type: string description: Target screen name for FLOW buttons with navigate action. description: Array of button objects. Meta supports various combinations of button types. WhatsappTemplateCarouselComponent: type: object description: Carousel component for multi-card templates. Each card can contain its own header, body, and buttons. required: - type - cards properties: type: type: string enum: - CAROUSEL cards: type: array description: Array of card objects, each with its own components. items: type: object properties: components: type: array items: type: object WhatsappTemplateData: type: object properties: id: type: string record_type: type: string example: whatsapp_message_template template_id: type: string name: type: string category: type: string enum: - MARKETING - UTILITY - AUTHENTICATION language: type: string status: type: string description: Current template status from Meta (e.g. PENDING, APPROVED, REJECTED, PAUSED, DISABLED). Additional statuses may be returned as Meta evolves the template lifecycle. rejection_reason: type: string components: type: array items: type: object description: Template components (header, body, footer, buttons) as submitted, including example values. whatsapp_business_account: type: object properties: id: type: string created_at: type: string format: date-time updated_at: type: string format: date-time WhatsappTemplateFooterComponent: type: object description: Optional footer displayed at the bottom of the message. Does not support variables. required: - type properties: type: type: string enum: - FOOTER text: type: string description: Footer text. Maximum 60 characters. For non-authentication templates. maxLength: 60 code_expiration_minutes: type: integer description: OTP code expiration time in minutes. Used in AUTHENTICATION template footers instead of free-form text. WhatsappTemplateHeaderComponent: type: object description: Optional header displayed at the top of the message. required: - type - format properties: type: type: string enum: - HEADER format: type: string enum: - TEXT - IMAGE - VIDEO - DOCUMENT - LOCATION description: 'Header format type: TEXT (supports one variable), IMAGE, VIDEO, DOCUMENT, or LOCATION.' text: type: string description: Header text. Required when format is TEXT. Supports one variable ({{1}}). Variables cannot be at the start or end. example: type: object description: Sample values for header variables. properties: header_text: type: array items: type: string description: Sample values for text header variables. header_handle: type: array items: type: string description: Media handle for IMAGE, VIDEO, or DOCUMENT headers. WhatsappUpdateConversationalComponentRequest: type: object properties: commands: type: array description: List of commands items: type: object properties: command: type: string description: type: string ice_breakers: type: array description: List of ice breakers items: type: string WhatsappUpdateProfileRequest: type: object properties: display_name: type: string about: type: string maxLength: 139 description: type: string maxLength: 512 category: type: string email: type: string website: type: string address: type: string profile_id: type: string format: uuid description: Messaging profile ID for inbound messages WhatsappUpdateTemplateRequest: type: object properties: category: type: string enum: - MARKETING - UTILITY - AUTHENTICATION components: type: array description: Updated template components. Same structure as the create request. items: oneOf: - $ref: '#/components/schemas/WhatsappTemplateHeaderComponent' - $ref: '#/components/schemas/WhatsappTemplateBodyComponent' - $ref: '#/components/schemas/WhatsappTemplateFooterComponent' - $ref: '#/components/schemas/WhatsappTemplateButtonsComponent' - $ref: '#/components/schemas/WhatsappTemplateCarouselComponent' description: A template component. Additional Meta component types not listed here are also accepted. WhatsappUserData: type: object properties: record_type: type: string example: whatsapp_user_data webhook_url: type: string format: url description: URL to receive Whatsapp signup events webhook_failover_url: type: string format: url description: Failover URL to receive Whatsapp signup events created_at: type: string format: date-time updated_at: type: string format: date-time WhatsappVerifyCodeRequest: type: object required: - code properties: code: type: string WhatsappWabaAdded: type: object required: - record_type - id - event_type - occurred_at - payload properties: record_type: type: string enum: - event id: type: string format: uuid event_type: type: string enum: - whatsapp.waba_added occurred_at: type: string format: date-time payload: $ref: '#/components/schemas/WhatsappWabaAddedPayload' WhatsappWabaAddedEvent: type: object required: - data properties: data: $ref: '#/components/schemas/WhatsappWabaAdded' WhatsappWabaAddedPayload: type: object required: - record_type - waba_id - status - event_id properties: record_type: type: string enum: - waba_account_added waba_id: type: string description: Meta WhatsApp Business Account identifier. phone_numbers: type: array items: type: string description: Phone numbers found on the WABA. Omitted for standard sessions started with a phone_number_id, and for sessions that fail before Telnyx fetches the numbers. status: type: string enum: - SUCCESS - FAILURE description: Signup session outcome. event_id: type: string description: Signup session ID. errors: type: array items: type: string description: Errors recorded during provisioning. WidgetSettings: type: object properties: theme: type: string enum: - light - dark description: The visual theme for the widget. audio_visualizer_config: $ref: '#/components/schemas/AudioVisualizerConfig' start_call_text: type: string description: Custom text displayed on the start call button. default_state: type: string enum: - expanded - collapsed description: The default state of the widget. position: type: string enum: - fixed - static description: The positioning style for the widget. view_history_url: type: - string - 'null' description: URL to view conversation history. report_issue_url: type: - string - 'null' description: URL for users to report issues. give_feedback_url: type: - string - 'null' description: URL for users to give feedback. agent_thinking_text: type: string description: Text displayed while the agent is processing. speak_to_interrupt_text: type: string description: Text prompting users to speak to interrupt. logo_icon_url: type: - string - 'null' description: URL to a custom logo icon for the widget. title: WidgetSettings description: Configuration settings for the assistant's web widget. WireguardInterface: allOf: - $ref: '#/components/schemas/Record' - $ref: '#/components/schemas/Interface' - type: object title: WireguardInterface properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: wireguard_interface endpoint: type: string description: The Telnyx WireGuard peers `Peer.endpoint` value. example: 203.0.113.0:51871 readOnly: true public_key: type: string description: The Telnyx WireGuard peers `Peer.PublicKey`. readOnly: true example: qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU= enable_sip_trunking: type: boolean description: Enable SIP traffic forwarding over VPN interface. example: false WireguardInterfaceCreate: allOf: - $ref: '#/components/schemas/WireguardInterface' - $ref: '#/components/schemas/RegionIn' - type: object title: WireguardInterfaceCreate required: - network_id - region_code WireguardInterfaceRead: allOf: - $ref: '#/components/schemas/WireguardInterface' - $ref: '#/components/schemas/RegionOut' WireguardPeer: allOf: - $ref: '#/components/schemas/Record' - $ref: '#/components/schemas/WireguardPeerPatch' - type: object title: WireguardPeer properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: wireguard_peer last_seen: type: string description: ISO 8601 formatted date-time indicating when peer sent traffic last time. readOnly: true example: '2018-02-02T22:25:27.521Z' wireguard_interface_id: description: The id of the wireguard interface associated with the peer. type: string format: uuid example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 private_key: type: string description: Your WireGuard `Interface.PrivateKey`.

This attribute is only ever utlised if, on POST, you do NOT provide your own `public_key`. In which case, a new Public and Private key pair will be generated for you. When your `private_key` is returned, you must save this immediately as we do not save it within Telnyx. If you lose your Private Key, it can not be recovered. example: qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU= readOnly: true WireguardPeerCreate: allOf: - $ref: '#/components/schemas/WireguardPeer' - type: object title: WireguardPeerCreate required: - wireguard_interface_id WireguardPeerPatch: type: object title: WireguardPeerPatch properties: public_key: type: string description: The WireGuard `PublicKey`.

If you do not provide a Public Key, a new Public and Private key pair will be generated for you. example: qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU= WirelessBlocklist: type: object properties: id: type: string format: uuid description: Identifies the resource. readOnly: true example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 record_type: type: string readOnly: true example: wireless_blocklist created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' name: description: The wireless blocklist name. type: string example: My wireless blocklist. type: description: The type of the wireless blocklist. type: string enum: - country - mcc - plmn default: country example: country values: description: Values to block. The values here depend on the `type` of Wireless Blocklist. type: array items: anyOf: - $ref: '#/components/schemas/CountryCode' - $ref: '#/components/schemas/MobileCountryCode' - $ref: '#/components/schemas/PLMNCode' example: - CA - MX - US WirelessConnectivityLog: type: object title: WirelessConnectivityLog description: This object represents a wireless connectivity session log that happened through a SIM card. It aids in finding out potential problems when the SIM is not able to attach properly. properties: record_type: type: string example: wireless_connectivity_log readOnly: true id: type: integer example: 137509451 description: Uniquely identifies the session. readOnly: true sim_card_id: type: string format: uuid description: The identification UUID of the related SIM card resource. example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58 log_type: type: string enum: - registration - data example: registration description: The type of the session, 'registration' being the initial authentication session and 'data' the actual data transfer sessions. readOnly: true imsi: type: string description: 'SIM cards are identified on their individual network operators by a unique International Mobile Subscriber Identity (IMSI).
Mobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs. The IMSI is stored in the Subscriber Identity Module (SIM) inside the device and is sent by the device to the appropriate network. It is used to acquire the details of the device in the Home Location Register (HLR) or the Visitor Location Register (VLR). ' readOnly: true example: 081932214823362973 imei: type: string description: The International Mobile Equipment Identity (or IMEI) is a number, usually unique, that identifies the device currently being used connect to the network. readOnly: true example: '490154203237518' mobile_country_code: type: string description: 'It''s a three decimal digit that identifies a country.

This code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code.' readOnly: true example: '310' mobile_network_code: type: string description: "It's a two to three decimal digits that identify a network.

\n This code is commonly seen\ \ joined with a Mobile Country Code (MCC) in a tuple that allows identifying a carrier known as PLMN (Public Land\ \ Mobile Network) code." readOnly: true example: '410' start_time: type: string description: ISO 8601 formatted date-time indicating when the session started. readOnly: true example: '2018-02-02T22:25:27.521Z' stop_time: type: string description: ISO 8601 formatted date-time indicating when the session ended. readOnly: true example: '2018-02-02T22:25:27.521Z' created_at: type: string description: ISO 8601 formatted date-time indicating when the record was created. readOnly: true example: '2018-02-02T22:25:27.521Z' last_seen: type: string description: ISO 8601 formatted date-time indicating when the last heartbeat to the device was successfully recorded. readOnly: true example: '2018-02-02T22:25:27.521Z' apn: type: string description: The Access Point Name (APN) identifies the packet data network that a mobile data user wants to communicate with. readOnly: true example: data00.telnyx ipv4: type: string description: 'The SIM''s address in the currently connected network. This IPv4 address is usually obtained dynamically, so it may vary according to the location or new connections. ' readOnly: true example: 192.168.0.0 ipv6: type: string description: 'The SIM''s address in the currently connected network. This IPv6 address is usually obtained dynamically, so it may vary according to the location or new connections. ' readOnly: true example: 2001:cdba:0000:0000:0000:0000:3257:9652 radio_access_technology: type: string description: The radio technology the SIM card used during the session. readOnly: true example: LTE state: type: string description: The state of the SIM card after when the session happened. readOnly: true example: provisioned cell_id: type: string description: The cell ID to which the SIM connected. readOnly: true example: 311210-6813 WirelessCost: type: object properties: amount: type: string description: Final cost. Cost is calculated as rate * unit example: '0.1' currency: type: string description: Currency of the rate and cost example: USD enum: - AUD - CAD - EUR - GBP - USD WirelessPcrfService: type: object properties: id: type: string description: The service identifier. example: service_123 name: type: string description: The name of the service. example: Netflix group: type: string description: The group the service belongs to. example: Streaming resource_type: type: string readOnly: true example: wireless_pcrf_service WirelessRate: type: object properties: amount: type: string description: Rate from which cost is calculated example: '0.1' currency: type: string description: Currency of the rate and cost example: USD enum: - AUD - CAD - EUR - GBP - USD X402PaymentRequirements: type: object description: x402 protocol v2 payment requirements. Contains all information needed to construct and sign a payment authorization. properties: x402Version: type: integer enum: - 2 description: x402 protocol version. Currently always 2. resource: type: object description: The resource being paid for. Included in the payment signature. properties: url: type: string description: Canonical URL of the payment resource. description: type: string description: Human-readable description of the payment. mimeType: type: string description: MIME type of the resource. accepts: type: array description: Accepted payment schemes. Currently only the `exact` EVM scheme is supported. items: type: object properties: scheme: type: string description: Payment scheme (e.g. "exact"). network: type: string description: Blockchain network identifier in CAIP-2 format (e.g. "eip155:8453" for Base). amount: type: string description: Amount in the token's smallest unit. asset: type: string description: Token contract address (e.g. USDC on Base). payTo: type: string description: Recipient wallet address. maxTimeoutSeconds: type: integer description: Maximum time in seconds before the payment authorization expires. extra: type: object description: Additional scheme-specific parameters including EIP-712 domain info and the facilitator URL. properties: quoteId: type: string facilitatorUrl: type: string name: type: string description: EIP-712 domain name (e.g. "USD Coin"). version: type: string description: EIP-712 domain version. X402QuoteRequest: type: object required: - amount_usd properties: amount_usd: type: string description: Amount in USD to fund (minimum 5.00, maximum 10000.00). example: '50.00' X402QuoteResponse: type: object properties: data: type: object properties: id: type: string description: Unique quote identifier. Use this to settle the payment. record_type: type: string enum: - quote amount_usd: type: string description: The quoted amount in USD. amount_crypto: type: string description: The equivalent amount in the payment cryptocurrency's smallest unit (e.g. USDC has 6 decimals, so $50.00 = "50000000"). network: type: string description: The blockchain network for the payment in CAIP-2 format (e.g. eip155:8453 for Base). expires_at: type: string format: date-time description: ISO 8601 timestamp when the quote expires. payment_requirements: $ref: '#/components/schemas/X402PaymentRequirements' X402SettleRequest: type: object required: - id properties: id: type: string description: The quote ID to settle. payment_signature: type: string description: Base64-encoded signed payment authorization (x402 PaymentPayload). Can alternatively be provided via the PAYMENT-SIGNATURE header. X402SettlementErrorResponse: type: object description: Error response for x402 settlement failures. Uses string error codes from the x402 error handling system. properties: errors: type: array items: type: object properties: code: type: string description: Machine-readable error code. enum: - invalid_signature - expired_authorization - invalid_nonce - insufficient_balance - insufficient_funds - insufficient_allowance - facilitator_unavailable - facilitator_timeout - settlement_timeout - transaction_failed - unknown title: type: string description: Short error title (e.g. "Payment Failed"). detail: type: string description: Human-readable error description with guidance. X402TransactionDetailResponse: type: object properties: data: $ref: '#/components/schemas/X402TransactionRecord' X402TransactionListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/X402TransactionRecord' meta: $ref: '#/components/schemas/x402-transactions_PaginationMeta' X402TransactionRecord: type: object description: An x402 payment transaction. properties: id: type: string format: uuid description: Unique transaction identifier. record_type: type: string enum: - x402_transaction amount: type: string description: The transaction amount in the specified currency. currency: type: string description: The currency of the transaction amount (e.g. USD). status: type: string description: The settlement status of the transaction. x402 transactions are created after successful on-chain settlement, so the status is `settled`. enum: - settled quote_id: type: string description: The original quote ID associated with this transaction. tx_hash: type: string nullable: true description: The on-chain transaction hash, if available. created_at: type: string format: date-time description: ISO 8601 timestamp when the transaction was created. updated_at: type: string format: date-time description: ISO 8601 timestamp when the transaction was last updated. X402TransactionResponse: type: object properties: data: type: object properties: id: type: string description: Unique transaction identifier. record_type: type: string enum: - x402_transaction amount: type: string description: The transaction amount in the specified currency. currency: type: string description: The currency of the transaction amount (e.g. USD). status: type: string description: The settlement status of the transaction. enum: - settled quote_id: type: string description: The original quote ID associated with this transaction. tx_hash: type: string nullable: true description: The on-chain transaction hash, if available. created_at: type: string format: date-time description: ISO 8601 timestamp when the transaction was created. XAIProviderParams: type: object description: xAI provider-specific parameters. required: - voice_id properties: voice_id: type: string description: xAI voice identifier. enum: - eve - ara - rex - sal - leo language: type: string description: Language code, or `auto` to detect. default: auto output_format: type: string description: Audio output format. enum: - mp3 - wav - pcm - mulaw - alaw default: mp3 sample_rate: type: integer description: Audio sample rate in Hz. enum: - 8000 - 16000 - 22050 - 24000 - 44100 - 48000 default: 24000 XAIVoiceSettings: type: object title: xAI Voice Settings properties: type: type: string enum: - xai description: Voice settings provider type language: description: Language code, or `auto` to detect automatically. type: string default: auto required: - type XaiTranscriptionLanguage: title: xAI transcription engine list of languages type: string description: Language to use for speech recognition example: en default: en enum: - ar - cs - da - de - en - es - fa - fil - fr - hi - id - it - ja - ko - mk - ms - nl - pl - pt - ro - ru - sv - th - tr - vi active: type: boolean description: The active status of the authentication provider default: true example: true address_book: type: boolean description: Indicates whether or not the address should be considered part of your list of addresses that appear for regular use. example: false default: true administrative_area: type: string description: The locality of the address. For US addresses, this corresponds to the state of the address. example: TX ai-gateway-resources_Error: type: object additionalProperties: false properties: errors: type: array items: $ref: '#/components/schemas/ErrorItem' minItems: 1 required: - errors ai-gateway-resources_PageMeta: type: object additionalProperties: false properties: page_number: type: integer minimum: 1 page_size: type: integer minimum: 1 maximum: 100 has_more: type: boolean snapshot: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ required: - page_number - page_size - has_more - snapshot ai-gateway-resources_Scope: type: string enum: - token_group - token_user - token_key - end_user ai-gateway-spend_Error: type: object additionalProperties: false properties: errors: type: array items: $ref: '#/components/schemas/ErrorItem' minItems: 1 required: - errors ai-gateway-spend_PageMeta: type: object additionalProperties: false properties: page_number: type: integer minimum: 1 page_size: type: integer minimum: 1 maximum: 100 has_more: type: boolean snapshot: type: string minLength: 1 maxLength: 256 pattern: ^[^\u0000-\u001f\u007f]+$ required: - page_number - page_size - has_more - snapshot ai-gateway-spend_Scope: type: string enum: - token_group - token_user - token_key - end_user ai-gateway_Error: type: object additionalProperties: false properties: errors: type: array items: $ref: '#/components/schemas/ErrorItem' minItems: 1 required: - errors ai-gateway_Scope: type: string enum: - token_group - token_user - token_key - end_user attempt: description: Webhook delivery attempt details. properties: status: type: string enum: - delivered - failed started_at: description: ISO 8601 timestamp indicating when the attempt was initiated. type: string format: date-time finished_at: description: ISO 8601 timestamp indicating when the attempt has finished. type: string format: date-time http: $ref: '#/components/schemas/http' errors: description: Webhook delivery error codes. type: array items: type: integer example: - status: delivered started_at: '2020-08-10T14:00:05.364Z' finished_at: '2020-08-10T14:00:05.595Z' http: request: url: https://fallback.example.com/webhooks headers: - - Accept - '*/*' response: status: 200 headers: - - Content-Type - text/html body: All good. - status: failed started_at: '2020-08-10T14:00:05.004Z' finished_at: '2020-08-10T14:00:05.360Z' http: request: url: https://typo.example.com/webhooks headers: - - Accept - '*/*' response: status: 404 headers: - - Content-Type - text/html - - Pragma - no-cache body: Oops. Not found. errors: - 75499 - status: failed started_at: '2020-08-10T14:00:00.000Z' finished_at: '2020-08-10T14:00:05.000Z' http: request: url: https://slow.example.com/webhooks headers: - 'Accept: */*' reponse: null errors: - code: '75001' title: Could not resolve name detail: Unable to resolve the webhook URL domain name audit-logs_Error: type: object properties: code: type: string description: Error code. example: '10001' title: type: string description: Short description of the error. example: Unauthorized detail: type: string description: Detailed information about the error. example: The request requires user authentication. audit-logs_PaginationMeta: type: object title: Pagination Meta properties: total_pages: type: integer example: 3 total_results: type: integer example: 50 page_number: type: integer example: 1 page_size: type: integer example: 10 azure_models: type: string enum: - fast batch-csv_PaginationMeta: type: object properties: total_pages: type: integer format: int32 example: 3 total_results: type: integer format: int32 example: 55 page_number: type: integer format: int32 example: 2 page_size: type: integer format: int32 example: 25 batch-csv_PaginationMeta_705dfa7312: type: object properties: total_pages: type: integer format: int32 example: 3 total_results: type: integer format: int32 example: 55 page_number: type: integer format: int32 example: 2 page_size: type: integer format: int32 example: 25 billing-group_Error: type: object required: - code - title properties: code: type: integer format: int32 title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object properties: {} additionalProperties: true billing_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object borough: type: string description: The borough of the address. This field is not used for addresses in the US but is used for some international addresses. example: Guadalajara bot-signup_Error: type: object description: API error. General errors carry only `detail`; structured errors also include `code`, `title`, `source`, and `meta`. properties: code: type: string description: Machine-readable Telnyx error code. example: '10005' title: type: string description: Short human-readable summary. example: Resource not found detail: type: string description: Human-readable explanation of the error. example: The requested resource or URL could not be found. source: type: object properties: pointer: type: string description: JSON pointer to the offending attribute. example: / meta: type: object properties: url: type: string description: Link to the error documentation. example: https://developers.telnyx.com/docs/overview/errors/10005 required: - detail bot-signup_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/bot-signup_Error' required: - errors branded-calling_Error: type: object required: - code - title - detail - meta properties: code: type: string example: '10005' description: Stable numeric Telnyx error catalog id. See `meta.url` for the full catalog entry. title: type: string example: Invalid parameters description: Short human-readable category, e.g. `Bad Request`, `Duplicate resource`, `Not Found`, `Forbidden`. Treat as advisory only - the stable identifier is `code`. detail: type: string example: field required description: Context-specific message describing what went wrong on this particular request. May embed offending values; do not rely on it for programmatic matching - branch on `code`. meta: type: object required: - url properties: url: type: string format: uri example: https://developers.telnyx.com/docs/overview/errors/10005 pending_check_ids: type: array items: type: string format: uuid description: Set on `422 vetting_checks_incomplete` responses from `/admin/dir/{id}/approve` and `/admin/phone-number-batches/approve`. Lists the still-pending vetting check ids. pending_check_codes: type: array items: type: string description: Codes of the pending vetting checks (e.g. `loa_signature_valid`). pending_check_labels: type: array items: type: string description: Human-readable labels of the pending vetting checks. description: Carries `url` linking to the Telnyx error catalog entry for this `code`. Useful for forwarding the user to documentation. source: type: object description: Optional pointer at the offending field of the request. properties: pointer: type: string example: /body/legal_name parameter: type: string example: page[size] description: A single entry in the canonical Telnyx error envelope. `code` is the stable Telnyx error catalog id; the human-readable explanation lives at `meta.url`. `detail` is a context-specific message; `source.pointer` (when present) names the offending field of the request. branded-calling_Errors: type: object required: - errors properties: errors: type: array items: $ref: '#/components/schemas/branded-calling_Error' description: List of one or more error entries. Order is not significant. description: Canonical Telnyx error envelope. Returned on every 4xx and 5xx response from this service. `errors` is non-empty; multiple entries indicate multiple distinct problems with the same request (e.g. one entry per invalid phone number on a bulk operation). branded-calling_PaginationMeta: type: object required: - total_pages - total_results - page_number - page_size properties: total_pages: type: integer example: 3 description: Total number of pages available given the current `page_size`. total_results: type: integer example: 42 description: Total number of items across all pages (excludes soft-deleted rows). page_number: type: integer example: 1 description: 1-based index of this page. Echoes the `page[number]` query parameter (default `1`). page_size: type: integer example: 20 description: Number of items returned in this page's `data` array. Capped at 250. description: JSON:API pagination metadata returned with every paginated list response. Page numbering is 1-based. `page_size` reports the number of items actually returned in `data` for this page; the requested size is taken from the `page[size]` query parameter. brands_HTTPValidationError: title: HTTPValidationError type: object properties: detail: title: Detail type: array items: $ref: '#/components/schemas/ValidationError' business_name: type: string description: The business name associated with the address. An address must have either a first last name or a business name. example: Toy-O'Kon call-control_Error: required: - code - title properties: code: type: string format: integer title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer parameter: description: Indicates which query parameter caused the error. type: string meta: type: object call-control_Errors: properties: errors: type: array items: $ref: '#/components/schemas/call-control_Error' call-recordings_CursorPaginationMeta: type: object title: Cursor Pagination Meta properties: cursors: $ref: '#/components/schemas/Cursor' next: type: string description: Path to next page. example: /v2/recording_transcriptions?page[after]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI= previous: type: string description: Path to previous page. example: /v2/recording_transcriptions?page[before]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI= call-recordings_Error: required: - code - title properties: code: type: string description: Error code identifier (string or numeric string). title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object call-scripting_CreateQueueRequest: type: object title: Create Queue Request properties: MaxSize: description: The maximum size of the queue. example: '10' type: integer FriendlyName: description: A human readable name for the queue. example: Support Queue type: string example: MaxSize: '10' FriendlyName: Support Queue call-scripting_CreateQueueRequest_c75353cb83: type: object title: Create Queue Request properties: MaxSize: description: The maximum size of the queue. example: 10 type: integer FriendlyName: description: A human readable name for the queue. example: Support Queue type: string example: MaxSize: 10 FriendlyName: Support Queue call-scripting_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string call-scripting_PaginationMeta: title: Pagination Meta type: object properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 call-scripting_ResourceNotFoundError: type: object title: Resource not found example: errors: - detail: Resource not found properties: errors: type: array items: type: object properties: detail: type: string call-scripting_ResourceNotFoundError_c75353cb83: type: object title: Resource not found example: errors: - detail: Resource not found properties: errors: type: array items: type: object properties: detail: type: string call-scripting_UpdateConferenceParticipantRequest: type: object title: Update Conference Participant Request properties: Muted: description: Whether the participant should be muted. example: 'true' type: boolean Hold: description: Whether the participant should be on hold. example: 'true' type: boolean HoldUrl: description: The URL to be called using the `HoldMethod` for music that plays when the participant is on hold. The URL may return an MP3 file, a WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs. example: https://www.example.com/hold-music.xml type: string HoldMethod: description: The HTTP method to use when calling the `HoldUrl`. example: POST enum: - GET - POST type: string AnnounceUrl: description: The URL to call to announce something to the participant. The URL may return an MP3 fileo a WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs. example: https://www.example.com/announce.xml type: string AnnounceMethod: description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`. example: GET type: string enum: - GET - POST WaitUrl: description: The URL to call for an audio file to play while the participant is waiting for the conference to start. example: https://www.example.com/wait_music.mp3 type: string BeepOnExit: description: Whether to play a notification beep to the conference when the participant exits. example: 'false' type: boolean EndConferenceOnExit: description: Whether to end the conference when the participant leaves. example: 'false' type: boolean Coaching: description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given. example: 'false' type: boolean CallSidToCoach: description: The SID of the participant who is being coached. The participant being coached is the only participant who can hear the participant who is coaching. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ type: string example: BeepOnExit: 'false' call-scripting_UpdateConferenceParticipantRequest_c75353cb83: type: object title: Update Conference Participant Request properties: Muted: description: Whether the participant should be muted. example: true type: boolean Hold: description: Whether the participant should be on hold. example: true type: boolean HoldUrl: description: The URL to be called using the `HoldMethod` for music that plays when the participant is on hold. The URL may return an MP3 file, a WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs. example: https://www.example.com/hold-music.xml type: string HoldMethod: description: The HTTP method to use when calling the `HoldUrl`. example: POST enum: - GET - POST type: string AnnounceUrl: description: The URL to call to announce something to the participant. The URL may return an MP3 fileo a WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs. example: https://www.example.com/announce.xml type: string AnnounceMethod: description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`. example: GET type: string enum: - GET - POST WaitUrl: description: The URL to call for an audio file to play while the participant is waiting for the conference to start. example: https://www.example.com/wait_music.mp3 type: string BeepOnExit: description: Whether to play a notification beep to the conference when the participant exits. example: false type: boolean EndConferenceOnExit: description: Whether to end the conference when the participant leaves. example: false type: boolean Coaching: description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given. example: false type: boolean CallSidToCoach: description: The SID of the participant who is being coached. The participant being coached is the only participant who can hear the participant who is coaching. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ type: string example: BeepOnExit: false call-scripting_UpdateConferenceRequest: type: object title: Update Conference Request properties: Status: description: The new status of the resource. Specifying `completed` will end the conference and hang up all participants. example: completed type: string AnnounceUrl: description: The URL we should call to announce something into the conference. The URL may return an MP3 file, a WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs. example: https://www.example.com/announce.xml type: string AnnounceMethod: description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`. example: GET type: string enum: - GET - POST example: Status: completed call-scripting_UpdateConferenceRequest_c75353cb83: type: object title: Update Conference Request properties: Status: description: The new status of the resource. Specifying `completed` will end the conference and hang up all participants. example: completed type: string AnnounceUrl: description: The URL we should call to announce something into the conference. The URL may return an MP3 file, a WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs. example: https://www.example.com/announce.xml type: string AnnounceMethod: description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`. example: GET type: string enum: - GET - POST example: Status: completed call-scripting_UpdateQueueRequest: type: object title: Update Queue Request properties: MaxSize: description: The maximum size of the queue. example: '10' type: integer example: MaxSize: '10' call-scripting_UpdateQueueRequest_c75353cb83: type: object title: Update Queue Request properties: MaxSize: description: The maximum size of the queue. example: 10 type: integer example: MaxSize: 10 callAnalyzed: type: object title: Call Analyzed properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.analyzed enum: - call.analyzed description: The type of event being delivered. id: type: string format: uuid example: afa6f4ac-f569-575b-9127-75a2746cf0ab description: Unique identifier for the event. occurred_at: type: string format: date-time example: '2026-10-15T20:38:46.308491Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: assistant_id: type: string example: assistant-258e1b9b-aa09-5f71-a931-56fd3cf2eb1c description: Unique identifier of the assistant involved in the call. call_control_id: type: string example: v3:b5aa7d950dfd551e916cc42bee82e56e-510c4d08 description: Call ID used to issue commands via Call Control API. connection_id: type: string example: '1294850382059482660' description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 9f4eec6d-19a9-503f-be41-024cfaf1d5a6 description: ID that is unique to the call leg. call_session_id: type: string example: 340a438e-f327-5f36-be97-e5c13bde3a05 description: ID that is unique to the call session (group of related call legs). client_state: type: string example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl description: Base64-encoded state received from a command. conversation_id: type: string example: dc76aa9a-a1c2-5e6b-aed4-6775fe240151 description: ID unique to the conversation generated for the call. llm_model: type: string example: moonshotai/Kimi-K2.6 description: The large language model used during the conversation. stt_model: type: string example: deepgram/flux description: The speech-to-text model used in the conversation. tts_provider: type: string example: telnyx description: The text-to-speech provider used in the call. tts_model_id: type: string example: Ultra description: The model ID used for text-to-speech synthesis. tts_voice_id: type: string example: c80920a7-535c-5d39-b630-8ddf52d5a4f0 description: Voice ID used for TTS. duration_sec: type: integer example: 37 description: Duration of the conversation in seconds. from: type: string example: +131****7421 description: The caller's number or identifier. to: type: string example: +131****4802 description: The callee's number or SIP address. reason: type: - string - 'null' example: normal description: Reason the conversation ended. conversation_insights: type: - array - 'null' description: The conversation's generated insights, when insight generation was enabled for the assistant and has completed. Each entry carries a `status` and the generated `conversation_insights` results. An empty array when the conversation has no generated insights; null when insight data could not be retrieved. items: type: object properties: status: type: string example: completed description: Status of insight generation for this entry. conversation_insights: type: - array - 'null' description: Generated insight results. items: type: object properties: insight_id: type: string example: 6c5018ff-25a2-5364-b6be-f53de3d493c6 description: Identifier of the insight template the result was generated from. result: type: string example: The user called the voice assistant to schedule a dental appointment. The assistant confirmed availability for Tuesday at 10:00 AM and transferred the call to the office scheduling line. description: The generated insight result. cost: type: - object - string description: 'The session''s cost breakdown from Session Analysis, covering every product billed on the call: the AI Voice Assistant engine minutes (`ai-voice-assistant`), LLM inference tokens (`inference`), and call-control, SIP trunking, and recording lines. If cost data could not be retrieved after retries, this field carries the placeholder string `No cost data available.` instead of an object.' properties: total: type: string example: '0.060300' description: The total cost of the call, summed across every product in the breakdown. currency: type: string example: USD description: The currency of the cost amounts. breakdown: type: array description: Cost lines grouped by product. items: type: object title: Cost Breakdown properties: product: type: string example: ai-voice-assistant description: The Telnyx product the cost line belongs to (for example `ai-voice-assistant`, `inference`, `callcontrol-cdrs`, `siptrunking-cdrs`, `recording-cdrs`). cost: type: string example: '0.050000' description: Total cost for this product across the call, in the currency given by `cost.currency`. recordings: type: - array - 'null' description: Recordings created for the call. An empty array when the call had no recordings; null when recording data could not be retrieved. items: type: object title: Recording properties: id: type: string example: 850f003e-1278-5d6b-baf2-918aae3031dc description: Unique identifier of the recording. start_time: type: string format: date-time example: '2026-10-15T20:34:07.955834Z' description: ISO 8601 datetime of when the recording started. end_time: type: string format: date-time example: '2026-10-15T20:34:52.395814Z' description: ISO 8601 datetime of when the recording ended. format: type: string example: mp3 description: The recording file format. channels: type: string example: dual description: The recording channel configuration. download_urls: type: object description: Download URL per format. URLs are pre-signed and expire. properties: mp3: type: string description: Pre-signed URL for the mp3 recording file. wav: type: string description: Pre-signed URL for the wav recording file. example: record_type: event event_type: call.analyzed id: afa6f4ac-f569-575b-9127-75a2746cf0ab occurred_at: '2026-10-15T20:38:46.308491Z' payload: assistant_id: assistant-258e1b9b-aa09-5f71-a931-56fd3cf2eb1c call_control_id: v3:b5aa7d950dfd551e916cc42bee82e56e-510c4d08 call_leg_id: 9f4eec6d-19a9-503f-be41-024cfaf1d5a6 call_session_id: 340a438e-f327-5f36-be97-e5c13bde3a05 client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '1294850382059482660' conversation_id: dc76aa9a-a1c2-5e6b-aed4-6775fe240151 conversation_insights: - conversation_insights: - insight_id: 6c5018ff-25a2-5364-b6be-f53de3d493c6 result: The user called the voice assistant to schedule a dental appointment. The assistant confirmed availability for Tuesday at 10:00 AM and transferred the call to the office scheduling line to complete the booking. status: completed cost: breakdown: - cost: '0.050000' product: ai-voice-assistant - cost: '0.003600' product: callcontrol-cdrs - cost: '0.000900' product: inference - cost: '0.000800' product: recording-cdrs - cost: '0.005000' product: siptrunking-cdrs currency: USD total: '0.060300' duration_sec: 37 from: +131****7421 llm_model: moonshotai/Kimi-K2.6 reason: normal recordings: - channels: dual download_urls: mp3: https://storage.telnyx.com/recordings/06069104-45f7-5d17-9fa7-34cfeb4534fa/2026-10-15/9f4eec6d-19a9-503f.mp3 end_time: '2026-10-15T20:34:52.395814Z' format: mp3 id: 850f003e-1278-5d6b-baf2-918aae3031dc start_time: '2026-10-15T20:34:07.955834Z' stt_model: deepgram/flux to: +131****4802 tts_model_id: Ultra tts_provider: telnyx tts_voice_id: c80920a7-535c-5d39-b630-8ddf52d5a4f0 callAnalyzedEvent: type: object title: Call Analyzed Event properties: data: $ref: '#/components/schemas/callAnalyzed' callConversationCreated: type: object title: Call Conversation Created properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.conversation.created enum: - call.conversation.created description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Unique identifier for the event. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. created_at: type: string format: date-time example: '2025-05-29T13:35:38.927621Z' description: Timestamp when the event was created in the system. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. call_leg_id: type: string example: cc29cce6-3c91-11f0-a8e5-02420aef3d20 description: ID that is unique to the call leg. call_session_id: type: string example: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 description: ID that is unique to the call session (group of related call legs). connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. client_state: type: string example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl description: Base64-encoded state received from a command. conversation_id: type: string example: 0424805b-adc1-4ff8-9f95-e1de6883ecbe description: Unique identifier of the conversation created for this call. format: uuid from: type: string example: '+13124287921' description: The caller's number or identifier. to: type: string example: '+13125550100' description: The callee's number or SIP address. calling_party_type: type: string example: sip enum: - pstn - sip description: The type of calling party connection. example: record_type: event event_type: call.conversation.created id: eb8775a6-634f-48b0-b177-d5465a8a8e9f occurred_at: '2025-05-29T13:35:38.817785Z' created_at: '2025-05-29T13:35:38.927621Z' payload: call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20 call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '2694492062593582591' conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe from: '+13124287921' to: '+13125550100' description: A conversation has been created for the call. Use the conversation ID to correlate subsequent conversation events. callConversationCreatedEvent: type: object title: Call Conversation Created Event properties: data: $ref: '#/components/schemas/callConversationCreated' callConversationEnded: type: object title: Call Conversation Ended properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.conversation.ended enum: - call.conversation.ended description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Unique identifier for the event. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. created_at: type: string format: date-time example: '2025-05-29T13:35:38.927621Z' description: Timestamp when the event was created in the system. payload: type: object properties: assistant_id: type: string example: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d description: Unique identifier of the assistant involved in the call. call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: cc29cce6-3c91-11f0-a8e5-02420aef3d20 description: ID that is unique to the call leg. call_session_id: type: string example: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 description: ID that is unique to the call session (group of related call legs). client_state: type: string example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl description: Base64-encoded state received from a command. calling_party_type: type: string example: sip enum: - pstn - sip description: The type of calling party connection. conversation_id: type: string example: 0424805b-adc1-4ff8-9f95-e1de6883ecbe description: ID unique to the conversation or insight group generated for the call. duration_sec: type: integer example: 3 description: Duration of the conversation in seconds. reason: type: - string - 'null' example: customer_disconnect description: Reason the conversation ended. For Conversation Relay, `customer_disconnect` indicates that the customer WebSocket disconnected. messages: type: array description: The conversation transcript, in order. By default it contains only `user` and `assistant` text turns. When the assistant's `telephony_settings.conversation_ended_full_history` is `true`, it contains the full conversation history, including assistant tool calls, tool results, and `system` and `developer` entries. Redacted when data retention is disabled for the account. items: type: object properties: role: type: string enum: - user - assistant - tool - system - developer example: assistant description: The author of the message. `tool`, `system`, and `developer` only appear when `conversation_ended_full_history` is enabled. `system` and `developer` entries are informational (for example idle check-ins, voicemail prompts, participant-left notices, or messages added through the API); their wording is not a stable contract. content: type: string example: Your balance is $42.10. description: The text of the message. For a tool result, the tool output. May be absent on an assistant message that only contains `tool_calls`. timestamp: type: string format: date-time example: '2025-05-29T13:35:36.123456Z' description: ISO 8601 datetime of when the message was added to the conversation. tool_calls: type: array description: Tools the assistant called in this turn. Only present on `assistant` messages when `conversation_ended_full_history` is enabled. items: type: object properties: id: type: string example: call_1 description: Identifier of the tool call, referenced by the matching tool result's `tool_call_id`. type: type: string enum: - function example: function description: The type of tool call. function: type: object properties: name: type: string example: get_balance description: The name of the tool that was called. arguments: type: string example: '{"account":"123"}' description: The arguments passed to the tool, as a JSON-encoded string. tool_call_id: type: string example: call_1 description: The `id` of the tool call this message answers. Only present on `tool` messages when `conversation_ended_full_history` is enabled. from: type: string example: '+13124287921' description: The caller's number or identifier. to: type: string example: jamesw@assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d.sip.telnyx.com description: The callee's number or SIP address. llm_model: type: string example: openai/gpt-4o description: The large language model used during the conversation. stt_model: type: string example: distil-whisper/distil-large-v2 description: The speech-to-text model used in the conversation. tts_provider: type: string example: telnyx description: The text-to-speech provider used in the call. tts_model_id: type: string example: Natural description: The model ID used for text-to-speech synthesis. tts_voice_id: type: string example: Marissa description: Voice ID used for TTS. example: record_type: event event_type: call.conversation.ended id: eb8775a6-634f-48b0-b177-d5465a8a8e9f occurred_at: '2025-05-29T13:35:38.817785Z' created_at: '2025-05-29T13:35:38.927621Z' payload: assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20 call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 calling_party_type: sip client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '2694492062593582591' conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe duration_sec: 3 from: '+13124287921' to: jamesw@assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d.sip.telnyx.com llm_model: openai/gpt-4o stt_model: distil-whisper/distil-large-v2 tts_model_id: Natural tts_provider: telnyx tts_voice_id: Marissa reason: customer_disconnect messages: - role: assistant content: Hi, how can I help you today? timestamp: '2025-05-29T13:35:35.912345Z' - role: user content: Goodbye. timestamp: '2025-05-29T13:35:37.654321Z' callConversationEndedEvent: type: object title: Call Conversation Ended Event properties: data: $ref: '#/components/schemas/callConversationEnded' callConversationInsightsGenerated: type: object title: Call Conversation Insights Generated properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.conversation_insights.generated enum: - call.conversation_insights.generated description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. calling_party_type: type: string example: pstn enum: - pstn - sip description: The type of calling party connection. insight_group_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the insight group being generated for the call. results: type: array description: Array of insight results being generated for the call. items: type: object properties: insight_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the insight result being generated for the call. result: oneOf: - type: object description: The result of the insight. - type: string description: The result of the insight. example: record_type: event event_type: call.conversation_insights.generated id: 898e96ef-be63-45aa-9e7d-01332bff9a97 occurred_at: '2025-02-19T17:02:49.371454Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d calling_party_type: pstn insight_group_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 results: - insight_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 result: The user inquired about the menu at Ember & Oak. The menu offers various options, including vegetarian, vegan, and gluten-free dishes, as well as a children's menu. The restaurant also has a daily happy hour from 4 PM to 6 PM and offers takeaway and delivery services. The user found the information helpful but had to leave without making any further decisions or requests. No specific preferences or goals were expressed beyond inquiring about the menu. callConversationInsightsGeneratedEvent: type: object title: Call Conversation Insights Generated Event properties: data: $ref: '#/components/schemas/callConversationInsightsGenerated' callConversationStartFailed: type: object title: Call Conversation Start Failed properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.conversation.start_failed enum: - call.conversation.start_failed description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Unique identifier for the event. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. created_at: type: string format: date-time example: '2025-05-29T13:35:38.927621Z' description: Timestamp when the event was created in the system. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. call_leg_id: type: string example: cc29cce6-3c91-11f0-a8e5-02420aef3d20 description: ID that is unique to the call leg. call_session_id: type: string example: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 description: ID that is unique to the call session (group of related call legs). connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. client_state: type: string example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl description: Base64-encoded state received from a command. from: type: string example: '+13124287921' description: The caller's number or identifier. to: type: string example: '+13125550100' description: The callee's number or SIP address. calling_party_type: type: string example: sip enum: - pstn - sip description: The type of calling party connection. assistant_id: type: string example: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d description: Identifier of the AI assistant that failed to start. reason: type: string enum: - invalid_request - service_error example: invalid_request description: 'Why the conversation could not be started. `invalid_request`: the assistant request was rejected, for example because the assistant ID does not exist. `service_error`: the assistant could not be started because of an error on the Telnyx side.' example: record_type: event event_type: call.conversation.start_failed id: 3f1c2a9e-8d4b-4c6e-9a7f-1b2c3d4e5f60 occurred_at: '2025-05-29T13:35:38.817785Z' created_at: '2025-05-29T13:35:38.927621Z' payload: assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20 call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '2694492062593582591' from: '+13124287921' to: '+13125550100' reason: invalid_request description: The AI assistant requested for the call could not be started, so no conversation was created. No `call.conversation.created` or `call.conversation.ended` is sent for this attempt. callConversationStartFailedEvent: type: object title: Call Conversation Start Failed Event properties: data: $ref: '#/components/schemas/callConversationStartFailed' callRecordingError: type: object title: Call Recording Error properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.recording.error enum: - call.recording.error description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. reason: type: string example: Internal server error enum: - Failed to authorize with storage using custom credentials - Invalid credentials json - Unsupported backend - Internal server error description: Indication that there was a problem recording the call. example: record_type: event event_type: call.recording.error id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d reason: Internal server error callRecordingErrorEvent: type: object title: Call Recording Error Event properties: data: $ref: '#/components/schemas/callRecordingError' callRecordingTranscriptionSaved: type: object title: Call Recording Transcription Saved properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. event_type: type: string example: call.recording.transcription.saved enum: - call.recording.transcription.saved description: The type of event being delivered. id: type: string format: uuid example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 description: Identifies the type of resource. occurred_at: type: string format: date-time example: '2018-02-02T22:25:27.521992Z' description: ISO 8601 datetime of when the event occurred. payload: type: object properties: call_control_id: type: string example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg description: Call ID used to issue commands via Call Control API. connection_id: type: string example: 7267xxxxxxxxxxxxxx description: Call Control App ID (formerly Telnyx connection ID) used in the call. call_leg_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the call and can be used to correlate webhook events. call_session_id: type: string example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 description: ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call. client_state: type: string example: aGF2ZSBhIG5pY2UgZGF5ID1d description: State received from a command. calling_party_type: type: string example: pstn enum: - pstn - sip description: The type of calling party connection. recording_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the recording session and can be used to correlate webhook events. recording_transcription_id: type: string example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 description: ID that is unique to the transcription process and can be used to correlate webhook events. status: type: string example: completed enum: - completed description: The transcription status. transcription_text: type: string example: Hi! description: The transcribed text example: record_type: event event_type: call.recording.transcription.saved id: 898e96ef-be63-45aa-9e7d-01332bff9a97 occurred_at: '2025-02-19T17:02:49.371454Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d calling_party_type: pstn recording_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 recording_transcription_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 status: completed transcription_text: Hi! callRecordingTranscriptionSavedEvent: type: object title: Call Recording Transcription Saved Event properties: data: $ref: '#/components/schemas/callRecordingTranscriptionSaved' calls_CallResourceIndex: type: object title: Multiple call resources example: calls: [] end: '0' first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ page: '0' page_size: '1' start: '0' uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 properties: calls: type: array items: $ref: '#/components/schemas/CallResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: '19' first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: '0' page_size: type: integer description: The number of items on the page example: '20' start: type: integer description: The number of the first element on the page, zero-indexed. example: '0' uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1 calls_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string calls_InitiateAICallRequest: type: object title: Initiate AI Call Request required: - From - To - AIAssistantId properties: From: description: The phone number of the party initiating the call. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string To: description: The phone number of the called party. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string AIAssistantId: description: The ID of the AI assistant to use for the call. type: string AIAssistantVersion: description: The version of the AI assistant to use. type: string AIAssistantDynamicVariables: description: Key-value map of dynamic variables to pass to the AI assistant. type: object additionalProperties: type: string example: customer_name: John Doe account_id: '12345' CallerId: description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If omitted, the display name will be the same as the number in the `From` field. example: Info type: string StatusCallback: description: URL destination for Telnyx to send status callback events for this AI call. When provided, this per-call value overrides the status callback URL configured on the TeXML application/connection. example: https://www.example.com/callback type: string StatusCallbackEvent: description: 'The status callback events for which Telnyx should send a webhook for this AI call. Multiple events can be defined when separated by a space. Valid values: initiated, ringing, answered, completed, no-answer, busy, canceled, failed, analyzed. When provided, this per-call value overrides the status callback events configured on the TeXML application/connection.' example: initiated answered default: completed type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback` and `StatusCallbacks` for this AI call. When provided, this per-call value overrides the status callback method configured on the TeXML application/connection. example: GET default: POST type: string enum: - GET - POST StatusCallbacks: description: Array of URL destinations for Telnyx to send status callback events for this AI call. When provided, these per-call values override the status callback URL configured on the TeXML application/connection. type: array items: type: string example: - https://www.example.com/callback1 - https://www.example.com/callback2 CustomHeaders: description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties. type: array items: type: object properties: name: type: string description: The name of the custom header value: type: string description: The value of the custom header required: - name - value example: - name: X-Custom-Header value: custom-value ConversationCallback: description: URL destination for Telnyx to send AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`. example: https://www.example.com/conversation-callback type: string ConversationCallbackMethod: description: HTTP request type used for `ConversationCallback` and `ConversationCallbacks`. example: GET default: POST type: string enum: - GET - POST ConversationCallbacks: description: Array of URL destinations for AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`. type: array items: type: string example: - https://www.example.com/conversation-callback1 - https://www.example.com/conversation-callback2 MachineDetection: description: Enables Answering Machine Detection. example: Enable default: Disable type: string enum: - Enable - Disable - DetectMessageEnd DetectionMode: description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection example: Premium default: Regular type: string enum: - Premium - Regular - PremiumCallScreening AsyncAmd: description: Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed. example: 'true' default: 'false' type: boolean AsyncAmdStatusCallback: description: URL destination for Telnyx to send AMD callback events to for the call. example: https://www.example.com/callback type: string AsyncAmdStatusCallbackMethod: description: HTTP request type used for `AsyncAmdStatusCallback`. example: GET default: POST type: string enum: - GET - POST MachineDetectionTimeout: description: Maximum timeout threshold in milliseconds for overall detection. example: '5000' default: '30000' maximum: '60000' minimum: '500' type: integer MachineDetectionPromptEndTimeout: description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds. Used when `DetectionMode` is `PremiumCallScreening`. example: '5000' minimum: '1000' maximum: '120000' type: integer MachineDetectionSpeechThreshold: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used. example: '2000' default: '3500' type: integer MachineDetectionSpeechEndThreshold: description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used. example: '2000' default: '800' type: integer MachineDetectionSilenceTimeout: description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used. example: '2000' default: '3500' type: integer Passports: description: A string of passport identifiers to associate with the call. type: string TimeLimit: description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds. example: '3600' type: integer minimum: '30' maximum: '14400' default: '14400' Timeout: description: The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds. example: '60' type: integer minimum: '5' maximum: '120' default: '30' x-stainless-param: timeout_seconds Record: description: Whether to record the entire participant's call leg. Defaults to `false`. example: 'false' type: boolean RecordingChannels: description: The number of channels in the final recording. Defaults to `mono`. example: dual type: string enum: - mono - dual RecordingStatusCallback: description: The URL the recording callbacks will be sent to. example: https://example.com/recording_status_callback type: string RecordingStatusCallbackMethod: description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST RecordingStatusCallbackEvent: description: 'The changes to the recording''s state that should generate a call to `RecordingStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.' example: in-progress completed absent type: string RecordingTimeout: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. The minimum value is 0. The default value is 0 (infinite). example: '5' type: integer default: '0' RecordingTrack: description: The audio track to record for the call. The default is `both`. example: inbound type: string enum: - inbound - outbound - both Trim: description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim SendRecordingUrl: $ref: '#/components/schemas/calls_SendRecordingUrl' PreferredCodecs: description: The list of comma-separated codecs to be offered on a call. example: PCMA,PCMU type: string SipAuthUsername: description: The username to use for SIP authentication. example: user type: string SipAuthPassword: description: The password to use for SIP authentication. example: '1234' type: string SipRegion: description: Defines the SIP region to be used for the call. type: string default: US enum: - US - Europe - Canada - Australia - Middle East example: Canada example: From: '+13120001234' To: '+13121230000' AIAssistantId: ai-assistant-id-123 calls_InitiateCallRequest: type: object title: Initiate Call Request required: - To - From - ApplicationSid properties: ApplicationSid: description: The ID of the TeXML Application. type: string To: description: The phone number of the called party. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string From: description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string CallerId: description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If ommited, the display name will be the same as the number in the `From` field. example: Info type: string Url: description: The URL from which Telnyx will retrieve the TeXML call instructions. example: https://www.example.com/instructions.xml type: string UrlMethod: description: HTTP request type used for `Url`. The default value is inherited from TeXML Application setting. example: GET default: POST type: string enum: - GET - POST FallbackUrl: description: A failover URL for which Telnyx will retrieve the TeXML call instructions if the `Url` is not responding. example: https://www.example.com/instructions-fallback.xml type: string StatusCallback: description: URL destination for Telnyx to send status callback events to for the call. example: https://www.example.com/callback type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback`. example: GET default: POST type: string enum: - GET - POST StatusCallbackEvent: description: The call events for which Telnyx should send a webhook. Multiple events can be defined when separated by a space. example: initiated answered default: completed type: string MachineDetection: description: Enables Answering Machine Detection. example: Enable default: Disable type: string enum: - Enable - Disable - DetectMessageEnd DetectionMode: description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection example: Premium default: Regular type: string enum: - Premium - Regular - PremiumCallScreening AsyncAmd: description: Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed. example: 'true' default: 'false' type: boolean AsyncAmdStatusCallback: description: URL destination for Telnyx to send AMD callback events to for the call. example: https://www.example.com/callback type: string AsyncAmdStatusCallbackMethod: description: HTTP request type used for `AsyncAmdStatusCallback`. The default value is inherited from TeXML Application setting. example: GET default: POST type: string enum: - GET - POST MachineDetectionTimeout: description: Maximum timeout threshold in milliseconds for overall detection. example: '5000' default: '30000' maximum: '60000' minimum: '500' type: integer MachineDetectionPromptEndTimeout: description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds. Used when `DetectionMode` is `PremiumCallScreening`. example: '5000' minimum: '1000' maximum: '120000' type: integer MachineDetectionSpeechThreshold: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used. example: '2000' default: '3500' type: integer MachineDetectionSpeechEndThreshold: description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used. example: '2000' default: '800' type: integer MachineDetectionSilenceTimeout: description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used. example: '2000' default: '3500' type: integer CancelPlaybackOnMachineDetection: description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`. default: 'true' example: 'false' type: boolean CancelPlaybackOnDetectMessageEnd: description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`. default: 'true' example: 'false' type: boolean DeepfakeDetection: description: Enables Deepfake Detection on the dialed call. When enabled, audio from the remote party is analyzed to determine whether the voice is AI-generated. Results are delivered asynchronously via a callback. example: Enable type: string enum: - Enable DeepfakeDetectionCallbackUrl: description: URL destination for Telnyx to send deepfake detection callback events to for the call. example: https://www.example.com/deepfake-callback type: string DeepfakeDetectionCallbackMethod: description: HTTP request type used for `DeepfakeDetectionCallbackUrl`. example: GET default: POST type: string enum: - GET - POST PreferredCodecs: description: The list of comma-separated codecs to be offered on a call. example: PCMA,PCMU type: string Record: description: Whether to record the entire participant's call leg. Defaults to `false`. example: 'false' type: boolean RecordingChannels: description: The number of channels in the final recording. Defaults to `mono`. example: dual type: string enum: - mono - dual RecordingStatusCallback: description: The URL the recording callbacks will be sent to. example: https://example.com/recording_status_callback type: string RecordingStatusCallbackMethod: description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST RecordingStatusCallbackEvent: description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.' example: in-progress completed absent type: string RecordingTimeout: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. Please note that the transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite) example: '5' type: integer default: '0' RecordingTrack: description: The audio track to record for the call. The default is `both`. example: inbound type: string enum: - inbound - outbound - both SendRecordingUrl: $ref: '#/components/schemas/calls_SendRecordingUrl' SipAuthPassword: description: The password to use for SIP authentication. example: '1234' type: string SipAuthUsername: description: The username to use for SIP authentication. example: user type: string Trim: description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim CustomHeaders: description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties. type: array items: type: object properties: name: type: string description: The name of the custom header value: type: string description: The value of the custom header required: - name - value example: - name: X-Custom-Header value: custom-value SipRegion: description: Defines the SIP region to be used for the call. type: string default: US enum: - US - Europe - Canada - Australia - Middle East example: Canada MediaEncryption: description: Defines whether media should be encrypted on the call. When set to `SRTP`, the call will use Secure Real-time Transport Protocol for media encryption. When set to `DTLS`, the call will use DTLS for media encryption. Only supported for SIP destinations. example: disabled default: disabled type: string enum: - disabled - SRTP - DTLS SuperviseCallSid: description: The call control ID of the existing call to supervise. When provided, the created leg will be added to the specified call in supervising mode. Status callbacks and action callbacks will NOT be sent for the supervising leg. example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg type: string SupervisingRole: description: 'The supervising role for the new leg. Determines the audio behavior: barge (hear both sides), whisper (only hear supervisor), monitor (hear both sides but supervisor muted). Default: barge' example: monitor type: string enum: - barge - whisper - monitor default: barge Timeout: description: The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds. example: '60' type: integer minimum: '5' maximum: '120' default: '30' x-stainless-param: timeout_seconds TimeLimit: description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds. example: '3600' type: integer minimum: '30' maximum: '14400' default: '14400' Texml: description: TeXML to be used as instructions for the call. If provided, the call will execute these instructions instead of fetching from the Url. example: Hello type: string oneOf: - title: With URL required: - Url properties: Texml: not: {} - title: With TeXML required: - Texml properties: Url: not: {} - title: Application Default properties: Url: not: {} Texml: not: {} example: To: '+13121230000' From: '+13120001234' Url: https://www.example.com/texml.xml StatusCallback: https://www.example.com/statuscallback-listener ApplicationSid: example-app-sid calls_SendRecordingUrl: type: boolean description: Whether to send RecordingUrl in webhooks. example: 'false' default: 'true' campaigns_HTTPValidationError: title: HTTPValidationError type: object properties: detail: title: Detail type: array items: $ref: '#/components/schemas/ValidationError' charges_Error: required: - code - title properties: code: type: string format: integer title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer parameter: description: Indicates which query parameter caused the error. type: string meta: type: object charges_Errors: properties: errors: type: array items: $ref: '#/components/schemas/charges_Error' cloudflare-ip-list-sync_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object cloudflare-ip-list-sync_PaginationMeta: title: PaginationMeta required: - page_number - page_size - total_pages - total_results type: object properties: page_number: type: integer page_size: type: integer total_pages: type: integer total_results: type: integer cohere_ar_stt_models: type: string enum: - cohere/ar-stt collections_Error: type: object properties: code: type: string title: type: string detail: type: string meta: type: object additionalProperties: true properties: pointer: type: string description: JSON Pointer to the request field that caused the error. Present on field-level validation and conflict errors. example: /slug collections_Source: type: object properties: id: type: string example: source_8vkvtcksnawvbnxq48yv2l06wx record_type: type: string description: Identifies the record type. Always `ai_collection_source`. example: ai_collection_source collection_id: type: string format: uuid example: 6a09ccbd-8f9b-4c3a-9b0e-2f1d3c4b5a6e source_type: $ref: '#/components/schemas/SourceType' bucket_id: type: string description: The Telnyx Storage bucket name. Present only for `bucket` sources. example: policy-docs status: type: string example: ready conference-participants_DialConferenceParticipantRequest: type: object title: Create Conference Participant Request properties: Beep: description: Whether to play a notification beep to the conference when the participant enters and exits. example: onExit type: string enum: - 'true' - 'false' - onEnter - onExit StatusCallback: description: URL destination for Telnyx to send status callback events to for the call. example: https://www.example.com/callback type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback`. example: GET type: string enum: - GET - POST StatusCallbackEvent: description: 'The changes to the call''s state that should generate a call to `StatusCallback`. Can be: `initiated`, `ringing`, `answered`, and `completed`. Separate multiple values with a space. The default value is `completed`.' example: answered completed type: string To: description: The phone number of the called party. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string From: description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country code. example: '+16175551212' type: string Timeout: description: The number of seconds that we should allow the phone to ring before assuming there is no answer. Can be an integer between 5 and 120, inclusive. The default value is 30. example: '30' type: integer x-stainless-param: timeout_seconds Muted: description: Whether the participant should be muted. example: 'true' type: boolean StartConferenceOnEnter: description: Whether to start the conference when the participant enters. Defaults to `true`. example: 'false' type: boolean EndConferenceOnExit: description: Whether to end the conference when the participant leaves. Defaults to `false`. example: 'true' type: boolean Label: description: A unique label for the participant that will be added to the conference. The label can be used to reference the participant for updates via the TeXML REST API. example: customer type: string EarlyMedia: description: Whether participant shall be bridged to conference before the participant answers (from early media if available). Defaults to `false`. example: 'true' type: boolean default: 'false' ConferenceStatusCallback: description: The URL the conference callbacks will be sent to. example: https://example.com/conference_status_callback type: string ConferenceStatusCallbackMethod: description: HTTP request type used for `ConferenceStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST ConferenceStatusCallbackEvent: description: 'The changes to the conference''s state that should generate a call to `ConferenceStatusCallback`. Can be: `start`, `end`, `join` and `leave`. Separate multiple values with a space. By default no callbacks are sent.' example: start end join leave type: string WaitUrl: description: The URL to call for an audio file to play while the participant is waiting for the conference to start. example: https://www.example.com/wait_music.mp3 type: string MaxParticipants: description: The maximum number of participants in the conference. Can be a positive integer from 2 to 800. The default value is 250. example: '30' type: integer Coaching: description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given. example: 'false' type: boolean CallSidToCoach: description: The SID of the participant who is being coached. The participant being coached is the only participant who can hear the participant who is coaching. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ type: string CallerId: description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If ommited, the display name will be the same as the number in the `From` field. example: Info type: string TimeLimit: description: The maximum duration of the call in seconds. example: '30' type: integer MachineDetection: description: Whether to detect if a human or an answering machine picked up the call. Use `Enable` if you would like to ne notified as soon as the called party is identified. Use `DetectMessageEnd`, if you would like to leave a message on an answering machine. example: Enable type: string enum: - Enable - DetectMessageEnd MachineDetectionTimeout: description: How long answering machine detection should go on for before sending an `Unknown` result. Given in milliseconds. example: '1000' type: integer MachineDetectionSpeechThreshold: description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used. example: '2000' default: '3500' type: integer MachineDetectionSpeechEndThreshold: description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used. example: '2000' default: '800' type: integer MachineDetectionSilenceTimeout: description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used. example: '2000' default: '3500' type: integer AmdStatusCallback: description: The URL the result of answering machine detection will be sent to. example: https://www.example.com/amd_result type: string AmdStatusCallbackMethod: description: HTTP request type used for `AmdStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST ApplicationSid: description: The SID of the TeXML application that will handle the new participant's call. Required unless joining an existing conference by its ConferenceSid. example: '1846572522338780702' type: string CancelPlaybackOnMachineDetection: description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`. default: 'true' example: 'false' type: boolean CancelPlaybackOnDetectMessageEnd: description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`. default: 'true' example: 'false' type: boolean PreferredCodecs: description: The list of comma-separated codecs to be offered on a call. example: PCMA,PCMU type: string Record: description: Whether to record the entire participant's call leg. Defaults to `false`. example: 'false' type: boolean RecordingChannels: description: The number of channels in the final recording. Defaults to `mono`. example: dual type: string enum: - mono - dual RecordingStatusCallback: description: The URL the recording callbacks will be sent to. example: https://example.com/recording_status_callback type: string RecordingStatusCallbackMethod: description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST RecordingStatusCallbackEvent: description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.' example: in-progress completed absent type: string RecordingTrack: description: The audio track to record for the call. The default is `both`. example: inbound type: string enum: - inbound - outbound - both SipAuthPassword: description: The password to use for SIP authentication. example: '1234' type: string SipAuthUsername: description: The username to use for SIP authentication. example: user type: string Trim: description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim ConferenceRecord: description: Whether to record the conference the participant is joining. Defualts to `do-not-record`. The boolean values `true` and `false` are synonymous with `record-from-start` and `do-not-record` respectively. example: record-from-start type: string enum: - 'true' - 'false' - record-from-start - do-not-record ConferenceRecordingStatusCallback: description: The URL the conference recording callbacks will be sent to. example: https://example.com/conference_recording_status_callback type: string ConferenceRecordingStatusCallbackMethod: description: HTTP request type used for `ConferenceRecordingStatusCallback`. Defaults to `POST`. example: GET type: string enum: - GET - POST ConferenceRecordingStatusCallbackEvent: description: 'The changes to the conference recording''s state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`. `failed` and `absent` are synonymous.' example: in-progress completed failed absent type: string ConferenceRecordingTimeout: description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. Please note that the transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite) example: '5' type: integer default: '0' ConferenceTrim: description: Whether to trim any leading and trailing silence from the conference recording. Defaults to `trim-silence`. example: trim-silence type: string enum: - trim-silence - do-not-trim CustomHeaders: description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties. type: array items: type: object properties: name: type: string description: The name of the custom header value: type: string description: The value of the custom header required: - name - value example: - name: X-Custom-Header value: custom-value example: To: '+12065550100' From: '+12065550200' conference-participants_NewParticipantResource: type: object title: New participant resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: 'false' conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 end_conference_on_exit: 'false' hold: 'false' muted: 'false' status: completed uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b call_sid: type: string description: The identifier of this participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: type: boolean description: Whether the participant is coaching another call. example: 'false' coaching_call_sid: type: string description: The identifier of the coached participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ end_conference_on_exit: type: boolean description: Whether the conference ends when the participant leaves. example: 'false' hold: type: boolean description: Whether the participant is on hold. example: 'false' muted: type: boolean description: Whether the participant is muted. example: 'false' status: type: string description: The status of the participant's call in the conference. enum: - connecting - connected - completed example: connected uri: type: string description: The relative URI for this participant. example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json conference_sid: type: string format: uuid description: The unique identifier for the conference. example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 conference-participants_ParticipantResource: type: object title: Participant resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 api_version: v2/texml call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ call_sid_legacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: 'false' conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 end_conference_on_exit: 'false' hold: 'false' muted: 'false' status: completed uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b api_version: type: string description: The version of the API that was used to make the request. example: v2/texml call_sid: type: string description: The identifier of this participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ call_sid_legacy: type: string description: The identifier of this participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching: type: boolean description: Whether the participant is coaching another call. example: 'false' coaching_call_sid: type: string description: The identifier of the coached participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ coaching_call_sid_legacy: type: string description: The identifier of the coached participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ date_created: type: string description: The timestamp of when the resource was created. example: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Thu, 15 Jun 2023 09:56:45 +0000 end_conference_on_exit: type: boolean description: Whether the conference ends when the participant leaves. example: 'false' hold: type: boolean description: Whether the participant is on hold. example: 'false' muted: type: boolean description: Whether the participant is muted. example: 'false' status: type: string description: The status of the participant's call in the conference. enum: - connecting - connected - completed example: connected uri: type: string description: The relative URI for this participant. example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json conference_sid: type: string format: uuid description: The unique identifier for the conference. example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 conference-participants_ParticipantResourceIndex: type: object title: Multiple participant resources example: participants: [] end: '0' first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20 page: '0' page_size: '20' start: '0' uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20 properties: participants: type: array items: $ref: '#/components/schemas/conference-participants_ParticipantResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: '19' first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: '0' page_size: type: integer description: The number of items on the page example: '20' start: type: integer description: The number of the first element on the page, zero-indexed. example: '0' uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=0&PageSize=1 conferences_ConferenceResource: type: object title: Conference resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 api_version: v2/texml date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 friendly_name: weekly_review_call region: dc2 sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 status: in-progress subresource_uris: participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b api_version: type: string description: The version of the API that was used to make the request. example: v2/texml call_sid_ending_conference: type: string description: Caller ID, if present. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ date_created: type: string description: The timestamp of when the resource was created. example: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Thu, 15 Jun 2023 09:56:45 +0000 friendly_name: type: string description: A string that you assigned to describe this conference room. example: weekly_review_call reason_conference_ended: type: string description: The reason why a conference ended. When a conference is in progress, will be null. enum: - participant-with-end-conference-on-exit-left - last-participant-left - conference-ended-via-api - time-exceeded example: time-exceeded region: type: string description: A string representing the region where the conference is hosted. example: dc2 sid: type: string description: The unique identifier of the conference. example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1 status: type: string description: The status of this conference. enum: - init - in-progress - completed example: in-progress subresource_uris: type: object description: A list of related resources identified by their relative URIs. example: participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json additionalProperties: 'true' uri: type: string description: The relative URI for this conference. example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json conferences_ConferenceResourceIndex: type: object title: Multiple conference resources example: conferences: [] end: '0' first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ page: '0' page_size: '1' start: '0' uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 properties: conferences: type: array items: $ref: '#/components/schemas/conferences_ConferenceResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: '19' first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: '0' page_size: type: integer description: The number of items on the page example: '20' start: type: integer description: The number of the first element on the page, zero-indexed. example: '0' uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1 connections_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string connections_OutboundVoiceProfileId: title: Outbound Voice Profile ID type: string description: Identifies the associated outbound voice profile. example: '1293384261075731499' x-format: int64 connections_PaginationMeta: title: Pagination Meta type: object properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 country_code: type: string description: The two-character (ISO 3166-1 alpha-2) country code of the address. example: US customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 customer_service_record_ResourceNotFoundError: allOf: - $ref: '#/components/schemas/GenericError' - properties: code: example: '10005' type: string title: example: Resource not found type: string detail: example: The requested resource or URL could not be found. type: string meta: type: object properties: url: type: string example: https://developers.telnyx.com/docs/overview/errors/10005 type: object customer_service_record_UnprocessableEntityError: allOf: - $ref: '#/components/schemas/GenericError' - properties: code: example: '10002' type: string title: example: Invalid phone number type: string detail: example: The phone number is invalid. type: string source: type: object properties: pointer: type: string example: /phone_numbers meta: type: object properties: url: type: string example: https://developers.telnyx.com/docs/overview/errors/10002 type: object deepgram_models: type: string enum: - deepgram/nova-2 - deepgram/nova-3 detail-records_Error: type: object properties: code: type: string example: '10011' title: type: string example: Bad Request detail: type: string example: No matching record type was found matching given record type wirelessxx detail-records_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/detail-records_Error' detail-records_PaginationMeta: type: object properties: total_pages: type: integer format: int32 example: 3 total_results: type: integer format: int32 example: 55 page_number: type: integer format: int32 example: 2 page_size: type: integer format: int32 example: 25 documents_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object edge-compute_Error: type: object properties: code: type: string example: '10005' detail: type: string example: The requested function does not exist or you don't have access to it meta: $ref: '#/components/schemas/ErrorMeta' source: $ref: '#/components/schemas/ErrorSource' title: type: string example: Function not found edge-compute_PaginationMeta: type: object properties: page_number: type: integer example: 1 page_size: type: integer example: 20 total_pages: type: integer example: 3 total_results: type: integer example: 52 email_CursorPaginationMeta: type: object required: - page_size - has_next - has_previous properties: page_size: type: integer minimum: 1 next_cursor: type: string nullable: true description: Opaque cursor to fetch the next page previous_cursor: type: string nullable: true description: Opaque cursor to fetch the previous page has_next: type: boolean has_previous: type: boolean email_Error: type: object required: - code - title - detail properties: code: type: string enum: - '10001' - '10015' - '500' - '10007' - '10008' - '10020' - '40901' title: type: string detail: type: string source: type: object properties: pointer: type: string email_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorObject' suppressed: type: array description: Present when every recipient is suppressed, so the request is rejected and no message is created. items: $ref: '#/components/schemas/SuppressedRecipient' required: - errors email_PaginationMeta: type: object properties: page_size: type: integer minimum: 1 maximum: 100 page_cursor: type: string description: Cursor for the next page, when more results are available. required: - page_size email_Source: type: string enum: - feedback - manual - import - system emergency_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object extended_address: type: string description: Additional street address information about the address such as, but not limited to, unit number or apartment number. example: 14th Floor external-voice-integrations_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string external-voice-integrations_IntId: title: Int ID type: string description: Uniquely identifies the resource. example: '1293384261075731499' x-format: int64 external-voice-integrations_OutboundVoiceProfileId: title: Outbound Voice Profile ID type: string description: Identifies the associated outbound voice profile. example: '1293384261075731499' x-format: int64 external-voice-integrations_PaginationMeta: title: Pagination Meta type: object properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 first_name: type: string description: The first name associated with the address. An address must have either a first last name or a business name. example: Alfred functions-observability_Error: type: object properties: code: type: string title: type: string detail: type: string functions-observability_PaginationMeta: type: object properties: total_pages: type: integer total_results: type: integer page_number: type: integer page_size: type: integer google_models: type: string enum: - latest_long - latest_short - command_and_search - phone_call - video - default - medical_conversation - medical_dictation http: description: HTTP request and response information. properties: request: description: Request details. properties: url: type: string example: https://example.com/webhooks headers: $ref: '#/components/schemas/http_headers' response: description: Response details, optional. type: object properties: status: type: integer example: 200 headers: $ref: '#/components/schemas/http_headers' body: description: Raw response body, limited to 10kB. type: string http_headers: description: List of headers, limited to 10kB. type: array example: - - header_name - header_value items: type: array items: type: string humain_models: type: string enum: - humain/realtime inference-embedding_Assistant: properties: id: type: string name: type: string created_at: type: string format: date-time version_id: type: string description: Identifier for the assistant version returned by version-aware assistant endpoints. version_created_at: type: string format: date-time description: Timestamp when this assistant version was created. description: type: string model: type: string description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model. instructions: type: string description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) tools: $ref: '#/components/schemas/AssistantTools' description: 'The assistant''s tools. Responses merge the assistant''s shared Tools Library tools into this array alongside inline tools, each flagged `shared: true`; inline tools carry `shared: false`. On update, a sent `tools` array fully replaces the inline tools only — shared tools stay attached unless `tool_ids` changes. Each tool type except `function`, `webhook`, and `client_side_tool` allows at most one instance per assistant across both sources.' mcp_servers: type: array items: $ref: '#/components/schemas/AssistantMCPServer' default: [] description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here. a2a_agents: type: array items: $ref: '#/components/schemas/AssistantA2AAgent' default: [] description: 'A2A agents this assistant can delegate to. Tools are not stored here: at the start of every conversation each agent''s card is fetched and one tool is derived per skill the card advertises, named `a2a__`. The following limits are not enforced when the assistant is saved, and anything past them is dropped when the conversation starts: 64 agents per assistant, 64 skills per card, 128 derived tools per assistant, and a 6 second budget for all card fetches combined. An agent whose card cannot be fetched costs the assistant that capability for the conversation; it does not fail the call.' greeting: type: string description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions. llm_api_key_ref: type: string description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.' external_llm: $ref: '#/components/schemas/ExternalLLM' fallback_config: $ref: '#/components/schemas/FallbackConfig' voice_settings: $ref: '#/components/schemas/inference-embedding_VoiceSettings' avatar_settings: anyOf: - $ref: '#/components/schemas/AvatarSettings' - type: 'null' description: '**Beta:** Saved avatar configuration for supported realtime browser conversations. `null` means that no avatar is configured.' transcription: $ref: '#/components/schemas/TranscriptionSettings' telephony_settings: $ref: '#/components/schemas/TelephonySettings' messaging_settings: $ref: '#/components/schemas/MessagingSettings' enabled_features: items: $ref: '#/components/schemas/EnabledFeatures' type: array uniqueItems: true title: Enabled Features insight_settings: $ref: '#/components/schemas/InsightSettings' privacy_settings: $ref: '#/components/schemas/PrivacySettings' dynamic_variables_webhook_url: type: string description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.' dynamic_variables_webhook_timeout_ms: type: integer minimum: 1 maximum: 10000 default: 1500 description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). dynamic_variables: type: object description: Map of dynamic variables and their values additionalProperties: true import_metadata: $ref: '#/components/schemas/ImportMetadata' widget_settings: $ref: '#/components/schemas/WidgetSettings' interruption_settings: $ref: '#/components/schemas/inference-embedding_InterruptionSettings' integrations: type: array items: $ref: '#/components/schemas/AssistantIntegration' default: [] description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`. observability_settings: $ref: '#/components/schemas/Observability' version_name: type: string maxLength: 50 default: New assistant description: Human-readable name for the assistant version. related_mission_ids: type: array items: type: string default: [] description: IDs of missions related to this assistant. tags: type: array items: type: string default: [] description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints. post_conversation_settings: $ref: '#/components/schemas/PostConversationSettings' delegation_settings: $ref: '#/components/schemas/DelegationSettings' websocket_settings: $ref: '#/components/schemas/WebsocketSettings' conversation_flow: $ref: '#/components/schemas/ConversationFlow' type: object required: - id - name - created_at - model - instructions inference-embedding_ErrorObject: type: object properties: code: type: string description: Telnyx error code. Edge idempotency errors use 10015, 10027, or 10036; idempotency protection outages use 10016; replay-cap 413s surface 10007. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead. enum: - '10007' - '10015' - '10016' - '10027' - '10036' - '404' - '500' title: type: string detail: type: string source: type: object properties: pointer: type: string required: - code - title inference-embedding_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/inference-embedding_ErrorObject' required: - errors inference-embedding_HangupTool: properties: type: type: string enum: - hangup shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true hangup: $ref: '#/components/schemas/HangupToolParams' type: object required: - type - hangup title: HangupTool inference-embedding_InterruptionSettings: type: object title: InterruptionSettings description: Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`). properties: enable: type: boolean default: true description: Whether users can interrupt the assistant while it is speaking. disable_greeting_interruption: type: boolean description: When true, disables user interruptions while the assistant greeting is playing. start_speaking_plan: $ref: '#/components/schemas/StartSpeakingPlan' interrupt_prediction_threshold: type: - number - 'null' default: 0.0 minimum: 0.0 maximum: 1.0 description: Interrupt-prediction sensitivity, from 0.0 to 1.0. Set to null or 0.0 to disable interrupt prediction. inference-embedding_SummaryResponse: properties: summary: type: string title: Summary type: object required: - summary title: SummaryResponse inference-embedding_TransferTool: properties: type: type: string enum: - transfer shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true transfer: $ref: '#/components/schemas/InferenceEmbeddingTransferToolParams' type: object required: - type - transfer title: TransferTool inference-embedding_VoiceSettings: properties: voice: type: string description: 'The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API. To use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx..` (e.g. Telnyx.KokoroTTS.af_heart). For Soniox voices, use `Soniox.tts-rt-v2.` (e.g. Soniox.tts-rt-v2.Emma); every Soniox voice speaks all supported languages. The voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.' voice_speed: type: number default: 1 description: The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected by the synthesis engine. Soniox voices support a speed range of 0.7 to 1.3. api_key_ref: type: string description: 'The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.' temperature: type: number default: 0.5 description: Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs. similarity_boost: type: number default: 0.75 description: Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs. use_speaker_boost: type: boolean default: true description: Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs. style: type: number default: 0 description: Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs. speed: type: number default: 1.0 description: Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs. language_boost: type: - string - 'null' description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices. enum: - null - auto - Chinese - Chinese,Yue - English - Arabic - Russian - Spanish - French - Portuguese - German - Turkish - Dutch - Ukrainian - Vietnamese - Indonesian - Japanese - Italian - Korean - Thai - Polish - Romanian - Greek - Czech - Finnish - Hindi - Bulgarian - Danish - Hebrew - Malay - Persian - Slovak - Swedish - Croatian - Filipino - Hungarian - Norwegian - Slovenian - Catalan - Nynorsk - Tamil - Afrikaans default: null expressive_mode: type: boolean default: false description: Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices. background_audio: description: Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving. oneOf: - type: object properties: type: type: string enum: - predefined_media description: Select from predefined media options. value: type: string enum: - silence - office default: silence description: The predefined media to use. `silence` disables background audio. volume: type: number minimum: 0.1 maximum: 1.0 multipleOf: 0.1 default: 1.0 description: Volume level for the predefined background audio. Supports values from 0.1 to 1.0 in 0.1 increments. required: - type - value - type: object properties: type: type: string enum: - media_url description: Provide a direct URL to an MP3 file. The audio will loop during the call. value: type: string format: uri description: HTTPS URL to an MP3 file. required: - type - value - type: object properties: type: type: string enum: - media_name description: Reference a previously uploaded media by its name from Telnyx Media Storage. value: type: string description: The `name` of a media asset created via [Media Storage API](https://developers.telnyx.com/api/media-storage/create-media-storage). The audio will loop during the call. required: - type - value tool_call_audio: description: Optional sound played to the caller while the assistant runs a tool (for example a webhook or MCP tool). It replaces the background audio until the tool responds, then the background audio resumes. Defaults to null, which plays no sound; send `null` on update to clear it. Not played in conference calls. oneOf: - type: object properties: type: type: string enum: - predefined_media description: Select from predefined media options. value: type: string enum: - typing description: The predefined media to use. `typing` plays a keyboard typing sound. volume: type: number minimum: 0.0 maximum: 1.0 multipleOf: 0.1 default: 0.5 description: Volume level for the predefined media. Supports values from 0.0 to 1.0 in 0.1 increments. `0.0` plays no sound. required: - type - value - type: object properties: type: type: string enum: - media_url description: Provide a direct URL to an MP3 file. The audio loops while the tool runs. value: type: string format: uri description: HTTPS URL to an MP3 file. required: - type - value - type: 'null' default: null example: type: predefined_media value: typing volume: 0.5 type: object required: - voice inference-embedding_WebhookTool: properties: type: type: string enum: - webhook timeout_ms: type: integer default: 5000 maximum: 60000 description: The maximum number of milliseconds to wait for the webhook to respond before the tool call is aborted. Set this at the tool level, as a sibling of `type` — a `timeout_ms` nested inside the `webhook` object is stored but not applied, and the tool runs at this default instead. Applies when `webhook.async` is false. shared: type: boolean description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).' readOnly: true webhook: $ref: '#/components/schemas/WebhookToolParams' type: object required: - type - webhook title: WebhookTool integration-secrets_Error: properties: code: type: string title: Telnyx error code detail: type: string title: Error details title: type: string title: Error title type: object required: - detail title: Error integration-secrets_ErrorResponse: properties: errors: items: $ref: '#/components/schemas/integration-secrets_Error' type: array title: Errors type: object title: ErrorResponse integration-secrets_Metadata: properties: page_size: type: integer title: Page Size example: 25 page_number: type: integer title: Page Number example: 1 total_pages: type: integer title: Total Pages example: 10 total_results: type: integer title: Total Items example: 250 required: - page_size - page_number - total_pages - total_results type: object title: Metadata invoice_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object last_name: type: string description: The last name associated with the address. An address must have either a first last name or a business name. example: Foster legacy_published_account_billing_usage_reports_CdrGetDetailReportResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CdrDetailedReqResponse' meta: $ref: '#/components/schemas/batch-csv_PaginationMeta' legacy_published_account_billing_usage_reports_MdrGetDetailReportResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MdrDetailReportResponse' meta: $ref: '#/components/schemas/batch-csv_PaginationMeta' legacy_published_account_billing_usage_reports_SourceResponse: type: object properties: pointer: type: string description: A JSON Pointer [RFC6901] to the associated entity in the request document example: /title parameter: type: string description: a string indicating which URI query parameter caused the error example: metrics legacy_published_texml_siprec_TexmlCreateSiprecSessionRequestBody: type: object title: Create Siprec Session Request properties: ConnectorName: description: The name of the connector to use for the SIPREC session. example: my_connector type: string Name: description: Name of the SIPREC session. May be used to stop the SIPREC session from TeXML instruction. example: my_siprec_session type: string Track: description: The track to be used for siprec session. Can be `both_tracks`, `inbound_track` or `outbound_track`. Defaults to `both_tracks`. example: both_tracks type: string enum: - both_tracks - inbound_track - outbound_track IncludeMetadataCustomHeaders: description: When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise, they’ll be added to sip headers. example: 'true' type: boolean enum: - 'true' - 'false' Secure: description: Controls whether to encrypt media sent to your SRS using SRTP and TLS. When set you need to configure SRS port in your connector to 5061. example: 'true' type: boolean enum: - 'true' - 'false' SessionTimeoutSecs: description: Sets `Session-Expires` header to the INVITE. A reinvite is sent every half the value set. Usefull for session keep alive. Minimum value is 90, set to 0 to disable. example: '900' type: integer default: '1800' SipTransport: description: Specifies SIP transport protocol. example: tcp enum: - udp - tcp - tls type: string default: udp StatusCallback: description: URL destination for Telnyx to send status callback events to for the siprec session. example: https://www.example.com/callback type: string StatusCallbackMethod: description: HTTP request type used for `StatusCallback`. example: GET type: string enum: - GET - POST locality: type: string description: The locality of the address. For US addresses, this corresponds to the city of the address. example: Austin machine-payments_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string title: type: string detail: type: string meta: type: object properties: url: type: string source: type: object properties: pointer: type: string required: - errors media-storage_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object media-streaming_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object meeting-sessions_ErrorResponse: type: object additionalProperties: false required: - error properties: error: type: object additionalProperties: false required: - code - message properties: code: type: string message: type: string examples: - error: code: invalid_request message: webhook_url is disabled - error: code: not_found message: meeting session not found - error: code: unsupported_capability message: avatar video is not supported on platform 'unknown' - error: code: internal_error message: internal server error messaging_AutorespConfigsResponseSchema: title: AutorespConfigsResponseSchema description: List of Auto-Response Settings required: - data - meta type: object properties: data: title: Data type: array items: $ref: '#/components/schemas/AutorespConfigSchema' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' messaging_CreateMessagingProfileRequest: type: object required: - name - whitelisted_destinations properties: name: description: A user friendly name for the messaging profile. type: string whitelisted_destinations: description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]` all destinations will be allowed. type: array items: description: ISO 3166-1 alpha-2 country code. type: string pattern: ^[A-Z]{2}$ enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean default: true webhook_url: description: The URL where webhooks related to this messaging profile will be sent. type: - string - 'null' format: url default: '' webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. type: - string - 'null' format: url default: '' webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. type: string enum: - '1' - '2' - '2010-04-01' default: '2' number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. type: string pattern: ^[0-9]+(?:\.[0-9]+)?$ daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean mms_fall_back_to_sms: description: enables SMS fallback for MMS messages. type: boolean default: false mms_transcoding: description: enables automated resizing of MMS media. type: boolean default: false mobile_only: description: Send messages only to mobile phone numbers. type: boolean default: false smart_encoding: description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean default: false features: $ref: '#/components/schemas/MessagingProfileFeatures' resource_group_id: type: - string - 'null' maxLength: 64 description: The resource group ID to associate with this messaging profile. health_webhook_url: type: - string - 'null' format: url description: A URL to receive health check webhooks for numbers in this profile. ai_assistant_id: type: - string - 'null' maxLength: 64 description: The AI assistant ID to associate with this messaging profile. example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000 example: name: My name enabled: true webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks webhook_api_version: '2' number_pool_settings: toll_free_weight: 10 long_code_weight: 1 skip_unhealthy: true sticky_sender: false geomatch: false url_shortener_settings: domain: example.ex prefix: '' replace_blacklist_only: true send_webhooks: false whitelisted_destinations: - US messaging_Error: required: - code - title properties: code: type: string x-format: integer title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer parameter: description: Indicates which query parameter caused the error. type: string meta: type: object messaging_Error_0b38e7044b: required: - code - title properties: code: type: string x-format: integer title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer parameter: description: Indicates which query parameter caused the error. type: string meta: type: object messaging_Errors: properties: errors: type: array items: $ref: '#/components/schemas/messaging_Error' messaging_Errors_0b38e7044b: properties: errors: type: array items: $ref: '#/components/schemas/messaging_Error_0b38e7044b' messaging_InboundMessage: type: object properties: record_type: type: string example: event enum: - event description: Identifies the type of the resource. id: type: string format: uuid description: Identifies the type of resource. event_type: type: string example: message.received enum: - message.received description: The type of event being delivered. occurred_at: type: string format: date-time description: ISO 8601 formatted date indicating when the resource was created. payload: $ref: '#/components/schemas/InboundMessagePayload' example: record_type: event id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c event_type: message.received occurred_at: '2019-01-23T18:10:02.574Z' payload: record_type: message direction: inbound id: 7ee4241c-f127-47e5-9c34-3aac291f8058 type: SMS messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18665550001' carrier: T-MOBILE USA, INC. line_type: Wireless to: - phone_number: '+18445550001' status: delivered carrier: TELNYX LLC line_type: VoIP cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: [] webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] messaging_MessagingProfile: type: object properties: record_type: description: Identifies the type of the resource. type: string enum: - messaging_profile readOnly: true id: description: Identifies the type of resource. type: string format: uuid readOnly: true mms_fall_back_to_sms: description: enables SMS fallback for MMS messages. type: boolean default: false mms_transcoding: description: enables automated resizing of MMS media. type: boolean default: false name: description: A user friendly name for the messaging profile. type: string enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean webhook_url: description: The URL where webhooks related to this messaging profile will be sent. type: - string - 'null' format: url webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. type: - string - 'null' format: url webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. type: string enum: - '1' - '2' - '2010-04-01' health_webhook_url: description: 'DEPRECATED: health check url service checking' type: - string - 'null' format: url whitelisted_destinations: description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. type: array items: description: ISO 3166-1 alpha-2 country code. type: string pattern: ^[A-Z]{2}$ created_at: description: ISO 8601 formatted date indicating when the resource was created. type: string format: date-time readOnly: true updated_at: description: ISO 8601 formatted date indicating when the resource was updated. type: string format: date-time readOnly: true v1_secret: description: Secret used to authenticate with v1 endpoints. type: string number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. type: string pattern: ^[0-9]+(?:\.[0-9]+)?$ daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean redaction_enabled: description: Indicates whether message content redaction is enabled for this profile. When enabled, message text, MMS media, and the counterparty phone number are redacted in message records and reporting. Requires organization activation — contact support to enable. The field is only present in responses for organizations with redaction access. type: boolean default: false redaction_level: description: 'Determines how much information is redacted for privacy or compliance purposes. Level 1: message records and reporting are redacted, but inbound webhook payloads are not. Level 2 (default): message records, reporting, and inbound webhook payloads are all redacted.' type: integer default: 2 mobile_only: description: Send messages only to mobile phone numbers. type: boolean default: false smart_encoding: description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean default: false features: $ref: '#/components/schemas/MessagingProfileFeatures' organization_id: type: string description: The organization that owns this messaging profile. ai_assistant_id: type: - string - 'null' description: The AI assistant ID associated with this messaging profile. example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000 resource_group_id: type: - string - 'null' description: The resource group ID associated with this messaging profile. example: record_type: messaging_profile id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: Profile for Messages webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks enabled: true webhook_api_version: '2' whitelisted_destinations: - US created_at: '2019-01-23T18:10:02.574Z' updated_at: '2019-01-23T18:10:02.574Z' number_pool_settings: toll_free_weight: 10 long_code_weight: 2 skip_unhealthy: false sticky_sender: true geomatch: false url_shortener_settings: domain: example.ex prefix: cmpny replace_blacklist_only: true send_webhooks: false v1_secret: rP1VamejkU2v0qIUxntqLW2c health_webhook_url: null mms_fall_back_to_sms: false mms_transcoding: false daily_spend_limit: '100.00' daily_spend_limit_enabled: false redaction_enabled: false redaction_level: 2 mobile_only: false features: ai_opt_out_detection_enabled: true messaging_OutboundMessagePayloadCancelled: type: object properties: record_type: type: string example: message enum: - message description: Identifies the type of the resource. direction: type: string example: outbound enum: - outbound description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you. id: type: string format: uuid description: Identifies the type of resource. type: type: string enum: - SMS - MMS description: The type of message. messaging_profile_id: type: string description: Unique identifier for a messaging profile. organization_id: type: string format: uuid description: The id of the organization the messaging profile belongs to. from: type: object properties: phone_number: type: string description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code). x-format: address carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' to: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string description: The delivery status of the message. enum: - scheduled - queued - sending - sent - cancelled - expired - sending_failed - delivery_unconfirmed - delivered - delivery_failed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' cc: type: array items: type: object properties: phone_number: type: string description: Receiving address (+E.164 formatted phone number or short code). x-format: address status: type: string description: The delivery status of the message. enum: - scheduled - queued - sending - sent - cancelled - expired - sending_failed - delivery_unconfirmed - delivered - delivery_failed carrier: type: string description: The carrier of the receiver. line_type: type: string description: The line-type of the receiver. enum: - Wireline - Wireless - VoWiFi - VoIP - Pre-Paid Wireless - '' text: type: string description: 'Message body (i.e., content) as a non-empty string. **Required for SMS**' num_chars: type: integer description: The number of characters in the message text subject: type: - string - 'null' description: Subject of multimedia message media: type: array items: type: object properties: url: type: string format: url description: The url of the media requested to be sent. content_type: type: - string - 'null' x-format: mime-type description: The MIME type of the requested media. sha256: type: - string - 'null' description: The SHA256 hash of the requested media. size: type: - integer - 'null' description: The size of the requested media. webhook_url: type: - string - 'null' format: url description: The URL where webhooks related to this message will be sent. webhook_failover_url: type: - string - 'null' format: url description: The failover URL where webhooks related to this message will be sent if sending to the primary URL fails. encoding: type: string description: Encoding scheme used for the message body. parts: type: integer minimum: 1 maximum: 10 description: Number of parts into which the message's body must be split. tags: type: array description: Tags associated with the resource. items: type: string cost: type: - object - 'null' properties: amount: type: string description: The amount deducted from your account. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 cost_breakdown: type: - object - 'null' properties: carrier_fee: type: object properties: amount: type: string description: The carrier fee amount. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 rate: type: object properties: amount: type: string description: The rate amount applied. x-format: decimal currency: type: string description: The ISO 4217 currency identifier. x-format: iso4217 description: Detailed breakdown of the message cost components. tcr_campaign_id: type: - string - 'null' description: The Campaign Registry (TCR) campaign ID associated with the message. tcr_campaign_billable: type: boolean description: Indicates whether the TCR campaign is billable. tcr_campaign_registered: type: - string - 'null' description: The registration status of the TCR campaign. example: REGISTERED received_at: type: string format: date-time description: ISO 8601 formatted date indicating when the message request was received. sent_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was sent. completed_at: type: - string - 'null' format: date-time description: ISO 8601 formatted date indicating when the message was finalized. valid_until: type: - string - 'null' description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled format: date-time errors: type: array description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses. items: $ref: '#/components/schemas/messaging_Error_0b38e7044b' smart_encoding_applied: type: boolean description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks. example: record_type: message direction: outbound id: 40385f64-5717-4562-b3fc-2c963f66afa6 type: SMS messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18445550001' carrier: TELNYX LLC line_type: VoIP to: - phone_number: '+18665550001' status: cancelled carrier: T-MOBILE USA, INC. line_type: Wireless cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: [] webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0' currency: USD cost_breakdown: null tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] messaging_OutboundMessageResponse: type: object properties: data: $ref: '#/components/schemas/MessagingOutboundMessagePayload' messaging_PaginationMeta: type: object required: - total_pages - total_results - page_size - page_number properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 messaging_PaginationMeta_0b38e7044b: type: object required: - total_pages - total_results - page_size - page_number properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 messaging_RCSAgentsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/RCSAgent' meta: $ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b' messaging_UpdateMessagingProfileRequest: type: object properties: record_type: description: Identifies the type of the resource. type: string enum: - messaging_profile readOnly: true id: description: Identifies the type of resource. type: string format: uuid readOnly: true name: description: A user friendly name for the messaging profile. type: string enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean webhook_url: description: The URL where webhooks related to this messaging profile will be sent. type: - string - 'null' format: url webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. type: - string - 'null' format: url webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. type: string enum: - '1' - '2' - '2010-04-01' whitelisted_destinations: description: 'Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. This field is required if the messaging profile doesn''t have it defined yet.' type: array items: description: ISO 3166-1 alpha-2 country code. type: string pattern: ^[A-Z]{2}$ created_at: description: ISO 8601 formatted date indicating when the resource was created. type: string format: date-time readOnly: true updated_at: description: ISO 8601 formatted date indicating when the resource was updated. type: string format: date-time readOnly: true v1_secret: description: Secret used to authenticate with v1 endpoints. type: string number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. type: - string - 'null' pattern: ^[A-Za-z0-9 ]{1,11}$ daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. type: string pattern: ^[0-9]+(?:\.[0-9]+)?$ daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean mms_fall_back_to_sms: description: enables SMS fallback for MMS messages. type: boolean default: false mms_transcoding: description: enables automated resizing of MMS media. type: boolean default: false mobile_only: description: Send messages only to mobile phone numbers. type: boolean default: false smart_encoding: description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean default: false features: $ref: '#/components/schemas/MessagingProfileFeatures' ai_assistant_id: description: The ID of the AI assistant associated with this messaging profile. type: - string - 'null' example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000 redaction_enabled: description: Set to true to enable message content redaction on this profile, or false to disable it. Ignored if the organization is not on the redaction allowlist. See the [Message Redaction guide](/docs/messaging/messages/message-redaction) for what is redacted. type: boolean default: false redaction_level: description: 'The redaction level to apply when redaction is enabled. 1: redact message records and reporting only. 2 (default): also redact inbound webhook payloads. See the [Message Redaction guide](/docs/messaging/messages/message-redaction).' type: integer default: 2 example: name: Updated Profile for Messages webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks enabled: true webhook_api_version: '2' whitelisted_destinations: - US number_pool_settings: toll_free_weight: 10 long_code_weight: 2 skip_unhealthy: false sticky_sender: true geomatch: false url_shortener_settings: domain: example.ex prefix: cmpny replace_blacklist_only: true send_webhooks: false v1_secret: rP1VamejkU2v0qIUxntqLW2c messaging_WhatsappContact: type: object properties: addresses: type: array items: type: object properties: street: type: string city: type: string state: type: string zip: type: string country: type: string country_code: type: string type: type: string birthday: type: string emails: type: array items: type: object properties: email: type: string type: type: string name: type: object properties: formatted_name: type: string description: contact's full name as displayed in the message first_name: type: string last_name: type: string middle_name: type: string suffix: type: string prefix: type: string required: - formatted_name org: type: object properties: company: type: string department: type: string title: type: string phones: type: array items: type: object properties: phone: type: string x-format: E+164 type: type: string wa_id: type: string urls: type: array items: type: object properties: url: type: string format: url type: type: string messaging_WhatsappInteractive: type: object properties: type: type: string enum: - cta_url - list - carousel - button - location_request_message - flow action: type: object properties: name: type: string button: type: string buttons: type: array items: type: object properties: type: type: string enum: - reply reply: type: object properties: title: type: string description: button label, 20 character maximum id: type: string description: unique identifier for each button, 256 character maximum catalog_id: type: string product_retailer_id: type: string sections: type: array items: type: object properties: product_items: type: array items: type: object properties: product_retailer_id: type: string rows: type: array items: type: object properties: id: type: string description: arbitrary string identifying the row, 200 character maximum title: type: string description: row title, 24 character maximum description: type: string description: row description, 72 character maximum title: type: string description: section title, 24 character maximum mode: type: string parameters: type: object properties: display_text: type: string description: button label text, 20 character maximum url: type: string format: url description: button URL to load when tapped by the user flow_message_version: type: string description: flow message version, must be 3. Required for flow messages flow_token: type: string description: business-generated identifier for the flow session. Returned in the flow response for correlation flow_id: type: string description: ID of the flow to open. Provide exactly one of flow_id or flow_name flow_name: type: string description: name of the flow to open. Provide exactly one of flow_id or flow_name flow_cta: type: string description: text of the button that opens the flow, 1-20 characters, no emoji. Required for flow messages flow_action: type: string enum: - navigate - data_exchange description: how the flow starts. navigate opens the screen in flow_action_payload; data_exchange requests the first screen from the business's flow endpoint. Defaults to navigate flow_action_payload: type: object description: optional initial screen and data. When omitted, the flow opens on its first entry screen. Must be omitted when flow_action is data_exchange properties: screen: type: string description: ID of the first screen to show data: type: object description: input data for the first screen. Must be a non-empty object when provided mode: type: string enum: - draft - published description: use draft to test an unpublished flow. Defaults to published cards: type: array items: type: object properties: card_index: type: integer description: unique index for each card (0-9) type: type: string enum: - cta_url header: type: object properties: type: type: string enum: - image - video image: $ref: '#/components/schemas/WhatsappMedia' video: $ref: '#/components/schemas/WhatsappMedia' body: type: object properties: text: type: string description: 160 character maximum, up to 2 line breaks action: type: object properties: product_retailer_id: type: string description: the unique retailer ID of the product catalog_id: type: string description: the unique ID of the catalog body: type: object properties: text: type: string description: body text, 1024 character maximum footer: type: object properties: text: type: string description: footer text, 60 character maximum header: type: object properties: type: type: string enum: - document - image - text - video description: header type. Required when a header is provided; the matching document, image, text, or video field must be set document: $ref: '#/components/schemas/WhatsappMedia' image: $ref: '#/components/schemas/WhatsappMedia' video: $ref: '#/components/schemas/WhatsappMedia' text: type: string description: header text, 60 character maximum sub_text: type: string required: - type messaging_WhatsappMessage: required: - from - to - whatsapp_message type: object properties: from: type: string description: Phone number in +E.164 format associated with Whatsapp account example: '+13125551234' to: type: string description: Recipient phone number in +E.164 format, or the business-scoped user ID (BSUID) of a WhatsApp user who hides their phone number, for example `US.13491208655302741918`. Authentication templates cannot be sent to a BSUID. example: '+13125551234' whatsapp_message: $ref: '#/components/schemas/messaging_WhatsappMessageContent' type: type: string description: Message type - must be set to "WHATSAPP" example: WHATSAPP enum: - WHATSAPP webhook_url: description: The URL where webhooks related to this message will be sent. type: string format: url messaging_profile_id: description: Messaging profile ID - required if the 'from' number is not SMS-enabled type: string format: uuid messaging_WhatsappMessageContent: type: object properties: audio: $ref: '#/components/schemas/WhatsappMedia' document: $ref: '#/components/schemas/WhatsappMedia' image: $ref: '#/components/schemas/WhatsappMedia' sticker: $ref: '#/components/schemas/WhatsappMedia' video: $ref: '#/components/schemas/WhatsappMedia' interactive: $ref: '#/components/schemas/messaging_WhatsappInteractive' location: $ref: '#/components/schemas/WhatsappLocation' contacts: type: array items: $ref: '#/components/schemas/messaging_WhatsappContact' reaction: $ref: '#/components/schemas/WhatsappReaction' biz_opaque_callback_data: type: string description: custom data to return with status update type: type: string enum: - audio - document - image - sticker - video - interactive - location - template - reaction - contacts - text text: type: object description: Text message content. Can only be sent within a 24-hour customer service window. properties: body: type: string description: The text message body. example: Hello from Telnyx! preview_url: type: boolean description: Whether to show a URL preview in the message. default: false required: - body template: type: object description: Template message object. Provide either template_id or name + language to identify the template. properties: template_id: type: string description: Telnyx template ID (the id field from template list/get responses). When provided, name and language are resolved automatically. example: 019cd44b-3a1c-781b-956e-bd33e9fd2ac6 name: type: string description: Template name as registered with Meta. Required unless template_id is provided. example: order_confirmation language: type: object description: Template language. Required unless template_id is provided. properties: policy: type: string example: deterministic code: type: string description: Language code (e.g. en_US) example: en_US required: - code components: type: array description: Template parameter values for header, body, and button components. items: type: object properties: type: type: string enum: - header - body - button sub_type: type: string enum: - quick_reply - url - flow index: type: integer description: Button index (required for button components) parameters: type: array items: type: object properties: type: type: string enum: - text - image - video - document - currency - date_time - action text: type: string action: type: object description: Flow button parameters. Used with type action on a flow button component properties: flow_token: type: string description: business-generated identifier for the flow session. Returned in the flow response for correlation flow_action_data: type: object description: input data for the first screen of the flow messaging_toll_free_verification_EntityType: title: EntityType type: string enum: - SOLE_PROPRIETOR - PRIVATE_PROFIT - PUBLIC_PROFIT - NON_PROFIT - GOVERNMENT description: Business entity classification messaging_toll_free_verification_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object messaging_toll_free_verification_TFVerificationRequest: title: VerificationRequest required: - businessName - corporateWebsite - businessAddr1 - businessCity - businessState - businessZip - businessContactFirstName - businessContactLastName - businessContactEmail - businessContactPhone - messageVolume - phoneNumbers - useCase - useCaseSummary - productionMessageContent - optInWorkflow - optInWorkflowImageURLs - additionalInformation type: object properties: businessName: title: Businessname type: string maxLength: 500 description: Name of the business; there are no specific formatting requirements example: Telnyx LLC corporateWebsite: title: Corporatewebsite type: string maxLength: 500 description: A URL, including the scheme, pointing to the corporate website example: http://example.com businessAddr1: title: Businessaddr1 type: string maxLength: 500 description: Line 1 of the business address example: 600 Congress Avenue businessAddr2: title: Businessaddr2 type: string maxLength: 500 description: Line 2 of the business address example: 14th Floor businessCity: title: Businesscity type: string maxLength: 500 description: The city of the business address; the first letter should be capitalized example: Austin businessState: title: Businessstate type: string maxLength: 500 description: The full name of the state (not the 2 letter code) of the business address; the first letter should be capitalized example: Texas businessZip: title: Businesszip type: string maxLength: 500 description: The ZIP code of the business address example: '78701' businessContactFirstName: title: Businesscontactfirstname type: string maxLength: 500 description: First name of the business contact; there are no specific requirements on formatting example: John businessContactLastName: title: Businesscontactlastname type: string maxLength: 500 description: Last name of the business contact; there are no specific requirements on formatting example: Doe businessContactEmail: title: Businesscontactemail type: string maxLength: 500 description: The email address of the business contact example: email@example.com businessContactPhone: title: Businesscontactphone type: string maxLength: 500 description: The phone number of the business contact in E.164 format example: '+18005550100' messageVolume: allOf: - $ref: '#/components/schemas/Volume' description: Estimated monthly volume of messages from the given phone numbers example: 100,000 phoneNumbers: title: Phonenumbers type: array minItems: 1 items: $ref: '#/components/schemas/TFPhoneNumber' description: The phone numbers to request the verification of example: - phoneNumber: '+18773554398' - phoneNumber: '+18773554399' useCase: allOf: - $ref: '#/components/schemas/UseCaseCategories' description: Machine-readable use-case for the phone numbers example: 2FA useCaseSummary: title: Usecasesummary type: string maxLength: 500 description: Human-readable summary of the desired use-case example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal productionMessageContent: title: Productionmessagecontent type: string maxLength: 1000 description: An example of a message that will be sent from the given phone numbers example: Your Telnyx OTP is XXXX optInWorkflow: title: Optinworkflow type: string maxLength: 500 description: Human-readable description of how end users will opt into receiving messages from the given phone numbers example: User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset optInWorkflowImageURLs: title: Optinworkflowimageurls minItems: 1 type: array items: $ref: '#/components/schemas/Url' description: Images showing the opt-in workflow example: - url: https://telnyx.com/sign-up - url: https://telnyx.com/company/data-privacy additionalInformation: title: Additionalinformation type: string maxLength: 500 description: Any additional information isvReseller: title: Isvreseller type: - string - 'null' maxLength: 500 description: ISV name webhookUrl: title: Webhookurl type: string maxLength: 500 description: URL that should receive webhooks relating to this verification request example: http://example-webhook.com businessRegistrationNumber: title: Businessregistrationnumber type: - string - 'null' maxLength: 500 description: Official business registration number (e.g., Employer Identification Number (EIN) in the U.S.). Required from January 2026. example: 12-3456789 businessRegistrationType: title: Businessregistrationtype type: - string - 'null' maxLength: 500 description: Type of business registration being provided. Required from January 2026. example: EIN businessRegistrationCountry: title: Businessregistrationcountry type: - string - 'null' maxLength: 2 pattern: ^[A-Z]{2}$ description: ISO 3166-1 alpha-2 country code of the issuing business authority. Must be exactly 2 letters. Automatically converted to uppercase. Required from January 2026. example: US doingBusinessAs: title: Doingbusinessas type: - string - 'null' maxLength: 500 description: Doing Business As (DBA) name if different from legal name example: Acme Services entityType: anyOf: - $ref: '#/components/schemas/messaging_toll_free_verification_EntityType' - type: 'null' description: Business entity classification. Must be one of the 5 valid enum values. optInConfirmationResponse: title: Optinconfirmationresponse type: - string - 'null' maxLength: 500 description: Message sent to users confirming their opt-in to receive messages example: You have successfully opted in to receive messages from Acme Corp helpMessageResponse: title: Helpmessageresponse type: - string - 'null' maxLength: 500 description: The message returned when users text 'HELP' example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com' privacyPolicyURL: title: Privacypolicyurl type: - string - 'null' maxLength: 500 description: URL pointing to the business's privacy policy. Plain string, no URL format validation. example: https://example.com/privacy termsAndConditionURL: title: Termsandconditionurl type: - string - 'null' maxLength: 500 description: URL pointing to the business's terms and conditions. Plain string, no URL format validation. example: https://example.com/terms ageGatedContent: title: Agegatedcontent type: boolean default: false description: Indicates if messaging content requires age gating (e.g., 18+). Defaults to false if not provided. optInKeywords: title: Optinkeywords type: - string - 'null' maxLength: 500 description: Keywords used to collect and process consumer opt-ins example: START, YES, SUBSCRIBE campaignVerifyAuthorizationToken: title: Campaignverifyauthorizationtoken type: - string - 'null' maxLength: 500 description: Campaign Verify Authorization Token required for Political use case submissions starting February 17, 2026. This token is validated by Zipwhip and must be provided for all Political use case verifications after the deadline. example: cv_token_abc123xyz description: The body of a tollfree verification request messaging_toll_free_verification_VerificationRequestEgress: title: VerificationRequestEgress required: - businessName - corporateWebsite - businessAddr1 - businessCity - businessState - businessZip - businessContactFirstName - businessContactLastName - businessContactEmail - businessContactPhone - messageVolume - phoneNumbers - useCase - useCaseSummary - productionMessageContent - optInWorkflow - optInWorkflowImageURLs - additionalInformation - id - verificationRequestId type: object properties: businessName: title: Businessname type: string example: Telnyx LLC corporateWebsite: title: Corporatewebsite type: string example: http://example.com businessAddr1: title: Businessaddr1 type: string example: 600 Congress Avenue businessAddr2: title: Businessaddr2 type: string example: 14th Floor businessCity: title: Businesscity type: string example: Austin businessState: title: Businessstate type: string example: Texas businessZip: title: Businesszip type: string example: '78701' businessContactFirstName: title: Businesscontactfirstname type: string example: John businessContactLastName: title: Businesscontactlastname type: string example: Doe businessContactEmail: title: Businesscontactemail type: string example: email@example.com businessContactPhone: title: Businesscontactphone type: string example: '+18005550100' messageVolume: allOf: - $ref: '#/components/schemas/Volume' description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000; 5,000,000; 10,000,000+' example: 100,000 phoneNumbers: title: Phonenumbers type: array items: $ref: '#/components/schemas/TFPhoneNumber' example: - phoneNumber: '+18773554398' - phoneNumber: '+18773554399' useCase: allOf: - $ref: '#/components/schemas/UseCaseCategories' example: 2FA useCaseSummary: title: Usecasesummary type: string example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal productionMessageContent: title: Productionmessagecontent type: string example: Your Telnyx OTP is XXXX optInWorkflow: title: Optinworkflow type: string example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset optInWorkflowImageURLs: title: Optinworkflowimageurls type: array items: $ref: '#/components/schemas/Url' example: - url: https://telnyx.com/sign-up - url: https://telnyx.com/company/data-privacy additionalInformation: title: Additionalinformation type: string example: This is for security purposes, blah blah blah isvReseller: title: Isvreseller type: string example: 'Yes' webhookUrl: title: Webhookurl type: string example: http://example-webhook.com businessRegistrationNumber: title: Businessregistrationnumber type: string example: 12-3456789 businessRegistrationType: title: Businessregistrationtype type: string example: EIN businessRegistrationCountry: title: Businessregistrationcountry type: string example: US doingBusinessAs: title: Doingbusinessas type: string example: Acme Services entityType: allOf: - $ref: '#/components/schemas/messaging_toll_free_verification_EntityType' example: PRIVATE_PROFIT optInConfirmationResponse: title: Optinconfirmationresponse type: string example: You have successfully opted in to receive messages from Acme Corp helpMessageResponse: title: Helpmessageresponse type: string example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com' privacyPolicyURL: title: Privacypolicyurl type: string example: https://example.com/privacy termsAndConditionURL: title: Termsandconditionurl type: string example: https://example.com/terms ageGatedContent: title: Agegatedcontent type: boolean example: false optInKeywords: title: Optinkeywords type: string example: START, YES, SUBSCRIBE campaignVerifyAuthorizationToken: title: Campaignverifyauthorizationtoken type: - string - 'null' maxLength: 500 description: Campaign Verify Authorization Token required for Political use case submissions starting February 17, 2026 example: cv_token_abc123xyz id: title: Id type: string format: uuid verificationRequestId: title: Verificationrequestid type: string verificationStatus: allOf: - $ref: '#/components/schemas/TFVerificationStatus' default: In Progress description: A verification request as it comes out of the database messaging_toll_free_verification_VerificationRequestStatus: title: VerificationRequestStatus required: - businessName - corporateWebsite - businessAddr1 - businessCity - businessState - businessZip - businessContactFirstName - businessContactLastName - businessContactEmail - businessContactPhone - messageVolume - phoneNumbers - useCase - useCaseSummary - productionMessageContent - optInWorkflow - optInWorkflowImageURLs - additionalInformation - id - verificationStatus type: object properties: businessName: title: Businessname type: string example: Telnyx LLC corporateWebsite: title: Corporatewebsite type: string example: http://example.com businessAddr1: title: Businessaddr1 type: string example: 600 Congress Avenue businessAddr2: title: Businessaddr2 type: string example: 14th Floor businessCity: title: Businesscity type: string example: Austin businessState: title: Businessstate type: string example: Texas businessZip: title: Businesszip type: string example: '78701' businessContactFirstName: title: Businesscontactfirstname type: string example: John businessContactLastName: title: Businesscontactlastname type: string example: Doe businessContactEmail: title: Businesscontactemail type: string example: email@example.com businessContactPhone: title: Businesscontactphone type: string example: '+18889809750' messageVolume: allOf: - $ref: '#/components/schemas/Volume' description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000; 5,000,000; 10,000,000+' example: 100,000 phoneNumbers: title: Phonenumbers type: array items: $ref: '#/components/schemas/TFPhoneNumber' example: - phoneNumber: '+18773554398' - phoneNumber: '+18773554399' useCase: allOf: - $ref: '#/components/schemas/UseCaseCategories' example: 2FA useCaseSummary: title: Usecasesummary type: string example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal productionMessageContent: title: Productionmessagecontent type: string example: Your Telnyx OTP is XXXX optInWorkflow: title: Optinworkflow type: string example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset optInWorkflowImageURLs: title: Optinworkflowimageurls type: array items: $ref: '#/components/schemas/Url' example: - url: https://telnyx.com/sign-up - url: https://telnyx.com/company/data-privacy additionalInformation: title: Additionalinformation type: string example: This is for security purposes, blah blah blah isvReseller: title: Isvreseller type: string example: 'Yes' webhookUrl: title: Webhookurl type: string example: http://example-webhook.com businessRegistrationNumber: title: Businessregistrationnumber type: string example: 12-3456789 businessRegistrationType: title: Businessregistrationtype type: string example: EIN businessRegistrationCountry: title: Businessregistrationcountry type: string example: US doingBusinessAs: title: Doingbusinessas type: string example: Acme Services entityType: allOf: - $ref: '#/components/schemas/messaging_toll_free_verification_EntityType' example: PRIVATE_PROFIT optInConfirmationResponse: title: Optinconfirmationresponse type: string example: You have successfully opted in to receive messages from Acme Corp helpMessageResponse: title: Helpmessageresponse type: string example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com' privacyPolicyURL: title: Privacypolicyurl type: string example: https://example.com/privacy termsAndConditionURL: title: Termsandconditionurl type: string example: https://example.com/terms ageGatedContent: title: Agegatedcontent type: boolean example: false optInKeywords: title: Optinkeywords type: string example: START, YES, SUBSCRIBE campaignVerifyAuthorizationToken: title: Campaignverifyauthorizationtoken type: - string - 'null' maxLength: 500 description: Campaign Verify Authorization Token required for Political use case submissions starting February 17, 2026 example: cv_token_abc123xyz id: title: Id type: string format: uuid example: eaba9f52-164e-58e0-b002-4f668e18b7ed verificationStatus: allOf: - $ref: '#/components/schemas/TFVerificationStatus' example: Waiting For Customer reason: title: Reason type: string example: Unfortunately, we have to cancel this request as we do not support non tollfree US numbers. createdAt: title: Createdat type: string format: date-time example: '2024-01-23T18:10:02.574Z' updatedAt: title: Updatedat type: string format: date-time example: '2024-01-23T18:10:02.574Z' description: A verification request and its status, suitable for returning to users mobile_phone_numbers_PaginationMeta: type: object properties: total_pages: type: integer total_results: type: integer page_number: type: integer page_size: type: integer mobile_voice_connections_PaginationMeta: type: object properties: total_pages: type: integer total_results: type: integer page_number: type: integer page_size: type: integer name: type: string description: The name associated with the authentication provider. example: Okta neighborhood: type: string description: The neighborhood of the address. This field is not used for addresses in the US but is used for some international addresses. example: Ciudad de los deportes netapps_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object netapps_Error_17904fcfbc: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object netapps_Errors: properties: errors: type: array items: $ref: '#/components/schemas/netapps_Error' type: object netapps_Location: type: object title: Location properties: region: type: string description: Identifies the geographical region of location. example: AMER site: type: string description: Site of location. example: ORD pop: type: string description: Point of presence of location. example: CH1 code: type: string description: Location code. example: chicago-il name: type: string description: Human readable name of location. example: Chicago IL, US netapps_Location_17904fcfbc: type: object title: Location properties: region: type: string description: Identifies the geographical region of location. example: AMER site: type: string description: Site of location. example: ORD pop: type: string description: Point of presence of location. example: CH1 code: type: string description: Location code. example: chicago-il name: type: string description: Human readable name of location. example: Chicago IL, US netapps_Region: type: object title: Region properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: region code: type: string description: A code for the region. example: ashburn-va name: type: string description: A name for the region. example: Ashburn supported_interfaces: type: array description: List of interface types supported in this region. items: type: string example: wireguard_interface created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' netapps_Region_17904fcfbc: type: object title: Region properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: region code: type: string description: A code for the region. example: ashburn-va name: type: string description: A name for the region. example: Ashburn supported_interfaces: type: array description: List of interface types supported in this region. items: type: string example: wireguard_interface created_at: type: string description: ISO 8601 formatted date-time indicating when the resource was created. readOnly: true example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date-time indicating when the resource was updated. readOnly: true example: '2018-02-02T22:25:27.521Z' netapps_VirtualCrossConnectCoverage: allOf: - type: object title: VirtualCrossConnectCoverage properties: record_type: type: string description: Identifies the type of the resource. readOnly: true example: virtual_cross_connects_coverage location: $ref: '#/components/schemas/netapps_Location_17904fcfbc' cloud_provider: type: string enum: - aws - azure - gce description: The Virtual Private Cloud with which you would like to establish a cross connect. example: aws cloud_provider_region: type: string description: The region where your Virtual Private Cloud hosts are located. Should be identical to how the cloud provider names region, i.e. us-east-1 for AWS but Frankfurt for Azure example: us-east-1 available_bandwidth: type: array description: The available throughput in Megabits per Second (Mbps) for your Virtual Cross Connect. items: type: number example: - 50 - 100 - 200 - 500 noise-suppression-engines_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. Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.' enum: - local - toll_free - mobile - national - shared_cost - landline - tollfree - shortcode - longcode readOnly: true inbound_call_screening: type: string enum: - disabled - reject_calls - flag_calls default: disabled description: The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it. updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true hd_voice_enabled: type: boolean description: Indicates whether HD voice is enabled for this number. readOnly: true source_type: description: Indicates if the phone number was purchased or ported in. For some numbers this information may not be available. anyOf: - type: string enum: - number_order - port_request - type: 'null' readOnly: true deletion_lock_enabled: type: boolean description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal. activated_at: description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked. anyOf: - type: string format: date-time - type: 'null' readOnly: true required: - id - record_type - phone_number - country_iso_alpha2 - status - tags - external_pin - created_at - phone_number_type - purchased_at - deletion_lock_enabled numbers_PhoneNumberVerifyOwnershipResponse: type: object properties: found: type: array description: The list of phone numbers which you own and are in an editable state items: type: object properties: number_val_e164: type: string description: The phone number in E.164 format example: '+15551234567' id: $ref: '#/components/schemas/numbers_IntId_73c9788e53' not_found: type: array description: Phone numbers that are not found in the account items: type: string description: Phone number in E.164 format example: '+15551234568' record_type: type: string example: number_ownership_verification description: Identifies the type of the resource. readOnly: true numbers_PhoneNumbersJob: type: object properties: parameters: type: object properties: phone_numbers: type: array description: Saved target phone numbers in E.164 format and/or identifiers. Jobs created using filters contain the resolved identifiers, not the original filter expression. Stored identifier types are preserved. items: type: - string - integer external_pin: type: - string - 'null' description: Saved external_pin supplied for an update_phone_numbers job. connection_id: type: - string - 'null' description: Saved connection_id supplied for an update_phone_numbers job. customer_reference: type: - string - 'null' description: Saved customer_reference supplied for an update_phone_numbers job. billing_group_id: type: - string - 'null' description: Saved billing_group_id supplied for an update_phone_numbers job. hd_voice_enabled: type: - boolean - 'null' description: Saved hd_voice_enabled supplied for an update_phone_numbers job. deletion_lock_enabled: type: - boolean - 'null' description: Saved deletion_lock_enabled supplied for an update_phone_numbers job. tags: type: - array - 'null' description: Saved tags for an update_phone_numbers job. Values reflect creation-time normalization. items: type: string add_tags: type: - array - 'null' description: Saved add_tags for an update_phone_numbers job. Values reflect creation-time normalization. items: type: string remove_tags: type: - array - 'null' description: Saved remove_tags for an update_phone_numbers job. Values reflect creation-time normalization. items: type: string voice: type: object properties: tech_prefix_enabled: type: - boolean - 'null' description: Saved tech_prefix_enabled setting. caller_id_name_enabled: type: - boolean - 'null' description: Saved caller_id_name_enabled setting. usage_payment_method: type: - string - 'null' description: Saved usage_payment_method setting. inbound_call_screening: type: - string - 'null' description: Saved inbound_call_screening setting. call_forwarding: type: object properties: forwards_to: type: - string - 'null' description: Saved forwards_to setting. forwarding_type: type: - string - 'null' description: Saved forwarding_type setting. call_forwarding_enabled: type: - boolean - 'null' description: Saved call_forwarding_enabled setting. call_recording: type: object properties: inbound_call_recording_enabled: type: - boolean - 'null' description: Saved inbound_call_recording_enabled setting. inbound_call_recording_channels: type: - string - 'null' description: Saved inbound_call_recording_channels setting. inbound_call_recording_format: type: - string - 'null' description: Saved inbound_call_recording_format setting. record_continue_on_hold: type: - boolean - 'null' description: Saved record_continue_on_hold setting. media_features: type: object properties: rtp_auto_adjust_enabled: type: - boolean - 'null' description: Saved rtp_auto_adjust_enabled setting. accept_any_rtp_packets_enabled: type: - boolean - 'null' description: Saved accept_any_rtp_packets_enabled setting. t38_fax_gateway_enabled: type: - boolean - 'null' description: Saved t38_fax_gateway_enabled setting. cnam_listing: type: object properties: cnam_listing_enabled: type: - boolean - 'null' description: Saved cnam_listing_enabled setting. cnam_listing_details: type: - string - 'null' description: Saved cnam_listing_details setting. description: Saved voice settings for an update_phone_numbers job, using the public field names and nesting. Only settings present at creation are returned. emergency_enabled: type: - boolean - 'null' description: Saved emergency-services setting for an update_emergency_settings job. emergency_address_id: type: - string - 'null' description: Saved emergency address identifier for an update_emergency_settings job. An explicitly supplied null is preserved. readOnly: true description: Effective parameters saved when the job was created, not a snapshot of the original HTTP request or current phone-number settings. Update jobs include the saved update fields; emergency-settings jobs include the saved emergency fields; delete jobs include only targets. Absent fields are omitted, and saved false, null and empty values are preserved. Tags may be normalized to arrays; filter-created jobs contain resolved target identifiers rather than the original filters. Historical jobs with no saved arguments return an empty object. examples: - phone_numbers: - '1583466971586889004' - '+13127367254' customer_reference: customer-reference tags: - tag voice: tech_prefix_enabled: false - phone_numbers: - '+19705555098' emergency_enabled: false emergency_address_id: null - phone_numbers: - '+19705555098' id: type: string format: uuid example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 description: Identifies the resource. readOnly: true record_type: type: string example: phone_numbers_job description: Identifies the type of the resource. readOnly: true status: type: string enum: - pending - in_progress - completed - failed - expired default: pending example: pending description: Indicates the completion status of the background update. readOnly: true type: type: string enum: - update_emergency_settings - delete_phone_numbers - update_phone_numbers example: update_emergency_settings description: Identifies the type of the background job. readOnly: true etc: type: string format: date-time description: ISO 8601 formatted date indicating when the estimated time of completion of the background job. readOnly: true created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. readOnly: true updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true phone_numbers: type: array items: description: The unique phone numbers given as arguments in the job creation. $ref: '#/components/schemas/PhoneNumbersJobPhoneNumber' successful_operations: type: array items: description: The phone numbers successfully updated. $ref: '#/components/schemas/PhoneNumbersJobSuccessfulOperation' readOnly: true pending_operations: type: array items: description: The phone numbers pending confirmation on update results. Entries in this list are transient, and will be moved to either successful_operations or failed_operations once the processing is done. $ref: '#/components/schemas/PhoneNumbersJobPendingOperation' readOnly: true failed_operations: type: array items: $ref: '#/components/schemas/numbers_PhoneNumbersJobFailedOperation' readOnly: true example: id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7 record_type: phone_numbers_job status: pending type: update_emergency_settings etc: '2020-10-30T18:10:00.000Z' created_at: '2020-10-23T18:10:00.000Z' updated_at: '2020-10-23T18:10:01.000Z' phone_numbers: - id: '2637816387126861836' - phone_number: '+19715555098' - phone_number: '+19705555099' - id: '3388768018273' successful_operations: - id: '2637816387126861836' phone_number: '+19705555098' - id: '33081887126861836' phone_number: '+19715555098' pending_operations: - id: '2637816387126861837' phone_number: '+19705555099' failed_operations: - id: '3388768018273' phone_number: '+19705551234' errors: - code: '10015' title: Bad Request detail: The field is invalid. source: pointer: /emergency_address_id numbers_PhoneNumbersJobFailedOperation: properties: phone_number: type: string description: The phone number in e164 format. id: type: string description: The phone number's ID errors: type: array items: $ref: '#/components/schemas/numbers_Error_73c9788e53' type: object numbers_PhoneNumbersJobUpdatePhoneNumbersRequest: type: object required: - phone_numbers properties: phone_numbers: type: array description: Array of phone number ids and/or phone numbers in E164 format to update. This parameter is required if no filter parameters are provided. If you want to update specific numbers rather than all numbers matching a filter, you must use this parameter. Each item must be either a valid phone number ID or a phone number in E164 format (e.g., '+13127367254'). items: type: string tags: type: array description: A list of user-assigned tags to help organize phone numbers. items: type: string external_pin: type: string description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism. customer_reference: type: string description: Sets the customer reference on the selected phone numbers and retains the supplied value on the job. Recover the job without its ID using GET /phone_numbers/jobs with filter[customer_reference] within 90 days of job creation. This body field updates the numbers; the separate filter[customer_reference] query parameter selects numbers by their current reference. example: MY REF 001 connection_id: type: string description: Identifies the connection associated with the phone number. billing_group_id: type: string description: Identifies the billing group associated with the phone number. hd_voice_enabled: type: boolean description: Indicates whether to enable or disable HD Voice on each phone number. HD Voice is a paid feature and may not be available for all phone numbers, more details about it can be found in the Telnyx support documentation. deletion_lock_enabled: type: boolean description: Indicates whether to enable or disable the deletion lock on each phone number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal. voice: $ref: '#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest' example: phone_numbers: - '1583466971586889004' - '+13127367254' tags: - tag external_pin: '123456' customer_reference: customer-reference connection_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 billing_group_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 deletion_lock_enabled: true voice: call_forwarding: call_forwarding_enabled: true forwards_to: '+13035559123' forwarding_type: always numbers_SlimPhoneNumberDetailed: type: object example: id: '1293384261075731499' record_type: phone_number phone_number: '+19705555098' country_iso_alpha2: US status: active external_pin: '1234' connection_id: '1293384261075731499' customer_reference: customer-reference billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 emergency_enabled: true emergency_address_id: '1315261609962112019' emergency_status: active call_forwarding_enabled: true cnam_listing_enabled: true caller_id_name_enabled: true call_recording_enabled: true t38_fax_gateway_enabled: true phone_number_type: local inbound_call_screening: disabled purchased_at: '2019-10-23T18:10:00.000Z' created_at: '2019-10-23T18:10:00.000Z' updated_at: '2019-10-24T18:10:00.000Z' hd_voice_enabled: true activated_at: '2019-10-23T18:10:00.000Z' properties: id: $ref: '#/components/schemas/numbers_IntId_73c9788e53' record_type: type: string example: phone_number_slim description: Identifies the type of the resource. readOnly: true phone_number: type: string description: The +E.164-formatted phone number associated with this record. readOnly: true country_iso_alpha2: type: string description: The ISO 3166-1 alpha-2 country code of the phone number. example: US readOnly: true status: type: string description: The phone number's current status. enum: - purchase-pending - purchase-failed - port-pending - port-failed - active - deleted - emergency-only - ported-out - port-out-pending - requirement-info-pending - requirement-info-under-review - requirement-info-exception - provision-pending readOnly: true external_pin: type: string description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism. connection_id: type: string description: Identifies the connection associated with the phone number. customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 billing_group_id: type: string description: Identifies the billing group associated with the phone number. emergency_enabled: type: boolean description: Indicates whether emergency services are enabled for this number. readOnly: true emergency_address_id: type: string description: Identifies the emergency address associated with the phone number. readOnly: true emergency_status: type: string description: Indicates the status of the provisioning of emergency services for the phone number. This field contains information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned but is not yet enabled/disabled. enum: - active - deprovisioning - disabled - provisioning - provisioning-failed call_forwarding_enabled: type: boolean default: true description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints. readOnly: true cnam_listing_enabled: type: boolean description: Indicates whether a CNAM listing is enabled for this number. readOnly: true caller_id_name_enabled: type: boolean description: Indicates whether caller ID is enabled for this number. readOnly: true call_recording_enabled: type: boolean description: Indicates whether call recording is enabled for this number. readOnly: true t38_fax_gateway_enabled: type: boolean description: Indicates whether T38 Fax Gateway for inbound calls to this number. readOnly: true purchased_at: type: string description: ISO 8601 formatted date indicating when the resource was purchased. readOnly: true created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. readOnly: true phone_number_type: type: string description: 'The phone number''s type. Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.' enum: - local - toll_free - mobile - national - shared_cost - landline - tollfree - shortcode - longcode readOnly: true updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. readOnly: true hd_voice_enabled: type: boolean description: Indicates whether HD voice is enabled for this number. readOnly: true inbound_call_screening: type: string enum: - disabled - reject_calls - flag_calls default: disabled description: The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it. activated_at: description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked. anyOf: - type: string format: date-time - type: 'null' readOnly: true numbers_SubNumberOrder: properties: id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c292 readOnly: true order_request_id: type: string format: uuid example: 12ade33a-21c0-473b-b055-b3c836e1c293 readOnly: true country_code: type: string example: US readOnly: true phone_number_type: type: string example: local enum: - local - toll_free - mobile - national - shared_cost - landline user_id: type: string format: uuid example: d70873cd-7c98-401a-81b6-b1ae08246995 regulatory_requirements: type: array items: $ref: '#/components/schemas/SubNumberOrderRegulatoryRequirement' record_type: type: string example: sub_number_order readOnly: true phone_numbers_count: type: integer description: The count of phone numbers in the number order. example: 1 readOnly: true created_at: type: string format: date-time description: An ISO 8901 datetime string denoting when the number order was created. example: '2018-01-01T00:00:00.000000Z' readOnly: true updated_at: type: string format: date-time description: An ISO 8901 datetime string for when the number order was updated. example: '2018-01-01T00:00:00.000000Z' readOnly: true requirements_met: type: boolean description: True if all requirements are met for every phone number, false otherwise. example: true readOnly: true status: type: string enum: - pending - success - failure description: The status of the order. readOnly: true customer_reference: type: string description: A customer reference string for customer look ups. example: MY REF 001 is_block_sub_number_order: type: boolean description: True if the sub number order is a block sub number order example: false readOnly: true phone_numbers: type: array description: The first 50 phone numbers in the sub number order, including their per-number regulatory requirement statuses. Only present when filter[include_phone_numbers]=true is used. readOnly: true items: $ref: '#/components/schemas/numbers_SubNumberOrderPhoneNumber' type: object numbers_SubNumberOrderPhoneNumber: type: object properties: id: type: string format: uuid phone_number: type: string country_code: type: string phone_number_type: type: string requirements_met: type: boolean requirements_status: type: string status: type: string record_type: type: string bundle_id: type: - string - 'null' format: uuid regulatory_requirements: type: array items: $ref: '#/components/schemas/numbers_SubNumberOrderRegulatoryRequirementWithValue' numbers_SubNumberOrderRegulatoryRequirementWithValue: properties: record_type: type: string example: phone_number_regulatory_requirement readOnly: true requirement_id: type: string format: uuid description: Unique id for a requirement. example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_type: type: string enum: - textual - datetime - address - document example: address readOnly: true field_value: type: string description: The value of the requirement, this could be an id to a resource or a string value. example: 45f45a04-b4be-4592-95b1-9306b9db2b21 status: type: string description: The status of the regulatory requirement for this phone number. enum: - approved - declined - awaiting-value - pending-approval example: approved readOnly: true type: object oauth_Error: type: object properties: error: type: string description: Error code error_description: type: string description: Human-readable error description required: - error oauth_PaginationMeta: type: object properties: page_number: type: integer description: Current page number page_size: type: integer description: Number of items per page total_results: type: integer description: Total number of results total_pages: type: integer description: Total number of pages oauth_oauth_Error: type: object properties: error: type: string description: Error code error_description: type: string description: Human-readable error description required: - error oauth_oauth_PaginationMeta: type: object properties: page_number: type: integer description: Current page number page_size: type: integer description: Number of items per page total_results: type: integer description: Total number of results total_pages: type: integer description: Total number of pages organization_id: type: string format: uuid description: The id from the Organization the authentication provider belongs to. example: 24b4a4bb-c4df-46ad-bbcb-23fc741c5ad7 outbound-voice-profiles_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string parakeet_models: type: string enum: - nvidia/parakeet-v3 - omi-health/omi-med-stt-v1 phone_number: type: string description: The phone number associated with the address. example: '+12125559000' postal_code: type: string description: The postal code of the address. example: '78701' pricing_PaginationMeta: type: object properties: page_number: type: integer page_size: type: integer total_pages: type: integer total_results: type: integer required: - page_number - page_size - total_pages - total_results programmable-fax_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object programmable-fax_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string programmable-fax_RecordType: type: string example: event enum: - event description: Identifies the type of the resource. pronunciation-dicts_ErrorObject: type: object properties: code: type: string description: Machine-readable error code. example: '90202' title: type: string description: Short human-readable error title. example: Validation failed detail: type: string description: Detailed error description. example: items must have at least one item source: type: object description: Source of the error. properties: pointer: type: string description: JSON pointer to the field that caused the error. example: /items pronunciation-dicts_ErrorResponse: type: object description: Standard Telnyx error response. properties: errors: type: array items: $ref: '#/components/schemas/pronunciation-dicts_ErrorObject' pronunciation-dicts_PaginationMeta: type: object description: Pagination metadata returned with list responses. properties: page_number: type: integer description: Current page number (1-based). example: 1 page_size: type: integer description: Number of results per page. example: 20 total_results: type: integer description: Total number of results across all pages. example: 3 total_pages: type: integer description: Total number of pages. example: 1 push-notifications_Error: required: - code - title properties: code: type: string example: '10015' title: type: string example: Bad Request detail: type: string example: has already been taken source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string example: /mobile_push_credentials parameter: description: Indicates which query parameter caused the error. type: string example: application_name meta: type: object example: url: https://developers.telnyx.com/docs/overview/errors/10015 additionalProperties: true type: object queues_QueueResource: type: object title: Queue resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 average_wait_time: '30' current_size: '3' date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 max_size: '10' sid: my-queue uri: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json subresource_uris: members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 4e71926f-8f13-450e-b91c-23c2ef786aa6 average_wait_time: type: integer description: The average wait time in seconds for members in the queue. example: '30' current_size: type: integer description: The current number of members in the queue. example: '3' date_created: type: string description: The timestamp of when the resource was created. example: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Fri, 27 Oct 2023 07:41:58 +0000 max_size: type: integer description: The maximum size of the queue. example: '10' sid: type: string description: The unique identifier of the queue. example: my-queue uri: type: string description: The relative URI for this queue. example: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json subresource_uris: type: object description: A list of related resources identified by their relative URIs. example: members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json additionalProperties: 'true' queues_QueueResourceIndex: type: object title: Multiple queue resources example: queues: [] end: '0' first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ page: '0' page_size: '1' start: '0' uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 properties: queues: type: array items: $ref: '#/components/schemas/queues_QueueResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: '19' first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: '0' page_size: type: integer description: The number of items on the page example: '20' start: type: integer description: The number of the first element on the page, zero-indexed. example: '0' uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1 rcs-registration_ErrorResponse: type: object properties: detail: type: string errors: type: array items: type: object additionalProperties: true additionalProperties: true example: detail: The requested RCS resource was not found. recordings_ConferenceRecordingResource: type: object title: Conference recording resource example: account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ channels: '1' conference_sid: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f date_created: Fri, 27 Oct 2023 07:41:58 +0000 date_updated: Fri, 27 Oct 2023 07:41:58 +0000 duration: '5' media_url: https://www.example.com/download.mp3 sid: 136285da-4b74-46f1-a016-fe2982fa77c3 source: StartConferenceRecordingAPI start_time: Fri, 27 Oct 2023 07:41:58 +0000 status: completed subresource_uris: transcriptions: null uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json properties: account_sid: type: string description: The id of the account the resource belongs to. example: 61bf923e-5e4d-4595-a110-56190ea18a1b call_sid: type: string description: The identifier of the related participant's call. example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ channels: type: integer description: The number of channels in the recording. example: '1' conference_sid: type: string description: The identifier of the related conference. example: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f date_created: type: string description: The timestamp of when the resource was created. example: Thu, 15 Jun 2023 09:56:45 +0000 date_updated: type: string description: The timestamp of when the resource was last updated. example: Thu, 15 Jun 2023 09:56:45 +0000 duration: type: integer description: Duratin of the recording in seconds. example: '10' error_code: type: string description: The recording error, if any. media_url: type: string description: The URL to use to download the recording. example: https://www.example.com/download.mp3 sid: type: string description: The unique identifier of the recording. example: 136285da-4b74-46f1-a016-fe2982fa77c3 source: type: string description: How the recording was started. example: StartConferenceRecordingAPI enum: - DialVerb - Conference - OutboundAPI - Trunking - RecordVerb - StartCallRecordingAPI - StartConferenceRecordingAPI start_time: type: string description: The timestamp of when the recording was started. example: Thu, 15 Jun 2023 09:56:45 +0000 status: type: string description: The status of the recording. enum: - processing - absent - completed - deleted example: completed subresource_uris: type: object description: A list of related resources identified by their relative URIs. example: transcriptions: null additionalProperties: 'true' uri: type: string description: The relative URI for this recording. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json recordings_ConferenceRecordingResourceIndex: type: object title: Multiple conference recording resources example: participants: [] end: '0' first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20 page: '0' page_size: '20' start: '0' uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20 properties: recordings: type: array items: $ref: '#/components/schemas/recordings_ConferenceRecordingResource' end: type: integer description: The number of the last element on the page, zero-indexed. example: '19' first_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20 example: accepted next_page_uri: type: string description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ example: accepted page: type: integer description: Current page number, zero-indexed. example: '0' page_size: type: integer description: The number of items on the page example: '20' start: type: integer description: The number of the first element on the page, zero-indexed. example: '0' uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=0&PageSize=1 participants: type: array description: List of participant resources. items: type: object example: [] recordings_PlayBeep: type: boolean description: Whether to play a beep when recording is started. example: 'false' default: 'true' recordings_SendRecordingUrl: type: boolean description: Whether to send RecordingUrl in webhooks. example: 'false' default: 'true' recordings_TexmlGetCallRecordingsResponseBody: type: object title: Multiple recording resources properties: recordings: type: array items: $ref: '#/components/schemas/TexmlGetCallRecordingResponseBody' end: type: integer description: The number of the last element on the page, zero-indexed. example: '19' first_page_uri: type: string format: uri description: Relative uri to the first page of the query results previous_page_uri: type: string format: uri description: Relative uri to the previous page of the query results next_page_uri: type: string description: Relative uri to the next page of the query results example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1 page: type: integer description: Current page number, zero-indexed. example: '0' page_size: type: integer description: The number of items on the page example: '20' start: type: integer description: The number of the first element on the page, zero-indexed. example: '0' uri: type: string description: The URI of the current page. example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings.json?Page=0&PageSize=1 recordings_TwimlRecordingChannels: type: integer enum: - '1' - '2' default: '2' example: '1' reporting_Error: type: object properties: code: type: string example: '10011' title: type: string example: Bad Request detail: type: string example: Invalid parameter value reporting_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/reporting_Error' reporting_ErrorResponse_77109e5d17: type: object properties: errors: type: array items: $ref: '#/components/schemas/reporting_Error_77109e5d17' reporting_Error_77109e5d17: type: object properties: code: type: string example: '10011' title: type: string example: Bad Request detail: type: string example: Invalid parameter value reporting_MdrGetDetailResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MdrDetailResponse' meta: $ref: '#/components/schemas/reporting_PaginationMeta_77109e5d17' reporting_MdrGetUsageReportsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MdrUsageReportResponse' meta: $ref: '#/components/schemas/reporting_PaginationMeta_77109e5d17' reporting_PaginationMeta: type: object properties: total_pages: type: integer format: int32 example: 3 total_results: type: integer format: int32 example: 55 page_number: type: integer format: int32 example: 2 page_size: type: integer format: int32 example: 25 reporting_PaginationMeta_77109e5d17: type: object properties: total_pages: type: integer format: int32 example: 3 total_results: type: integer format: int32 example: 55 page_number: type: integer format: int32 example: 2 page_size: type: integer format: int32 example: 25 reson8_models: type: string enum: - reson8/turns settings: type: object description: The settings associated with the authentication provider. required: - idp_entity_id - idp_sso_target_url - idp_cert_fingerprint properties: idp_entity_id: type: string description: The Entity ID for the identity provider (IdP). format: uri example: https://myorg.myidp.com/saml/metadata idp_sso_target_url: type: string description: The SSO target url for the identity provider (IdP). format: uri example: https://myorg.myidp.com/trust/saml2/http-post/sso idp_cert_fingerprint: type: string description: The certificate fingerprint for the identity provider (IdP) example: 13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7 idp_cert_fingerprint_algorithm: type: string description: The algorithm used to generate the identity provider's (IdP) certificate fingerprint enum: - sha1 - sha256 - sha384 - sha512 default: sha1 example: sha256 settings_url: type: string description: The URL for the identity provider metadata file to populate the settings automatically. If the settings attribute is provided, that will be used instead. format: uri example: https://myorg.myidp.com/saml/metadata short_name: type: string description: The short name associated with the authentication provider. This must be unique and URL-friendly, as it's going to be part of the login URL. example: myorg siprec_siprec_Error: type: object required: - code - title properties: code: type: integer format: int32 title: type: string detail: type: string source: type: object properties: pointer: type: string description: JSON pointer (RFC6901) to the offending entity. parameter: type: string description: Indicates which query parameter caused the error. meta: type: object additionalProperties: true skip_address_verification: type: boolean description: An optional boolean value specifying if verification of the address should be skipped or not. UserAddresses are generally used for shipping addresses, and failure to validate your shipping address will likely result in a failure to deliver SIM cards or other items ordered from Telnyx. Do not use this parameter unless you are sure that the address is correct even though it cannot be validated. If this is set to any value other than true, verification of the address will be attempted, and the user address will not be allowed if verification fails. If verification fails but suggested values are available that might make the address correct, they will be present in the response as well. If this value is set to true, then the verification will not be attempted. Defaults to false (verification will be performed). default: false soniox_models: type: string enum: - soniox/stt-rt-v4 speech-to-text_Error: required: - code - title properties: code: type: string format: integer title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string format: json-pointer parameter: description: Indicates which query parameter caused the error. type: string meta: type: object speech-to-text_Errors: properties: errors: type: array items: $ref: '#/components/schemas/speech-to-text_Error' speechmatics_models: type: string 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 telephony-credentials_ErrorObject: type: object properties: code: description: Telnyx error code. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the framework may use string status codes ('404', '500') instead. enum: - '10015' - '10016' - '10027' - '10036' - '404' - '500' type: string detail: type: string source: type: object properties: pointer: type: string title: type: string required: - code - title telephony-credentials_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/telephony-credentials_ErrorObject' required: - errors telnyx_models: type: string enum: - openai/whisper-tiny - openai/whisper-large-v3-turbo text-to-speech_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string description: Error code. title: type: string description: Error title. detail: type: string description: Detailed error description. text-to-speech_ValidationErrorResponse: type: object properties: errors: type: object description: Validation error details keyed by field name. additionalProperties: type: array items: type: string toll-free-verification_EntityType: title: EntityType type: string enum: - SOLE_PROPRIETOR - PRIVATE_PROFIT - PUBLIC_PROFIT - NON_PROFIT - GOVERNMENT description: Business entity classification toll-free-verification_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object toll-free-verification_Errors: properties: errors: type: array items: $ref: '#/components/schemas/toll-free-verification_Error' type: object transcriptions-search_Error: type: object properties: code: type: string title: type: string detail: type: string meta: type: object additionalProperties: true transcriptions-search_PaginationMeta: type: object description: Pagination metadata following the standard Telnyx V2 API format. required: - total_pages - total_results - page_number - page_size properties: total_pages: type: integer description: Total number of pages. example: 1 total_results: type: integer description: Total number of matching results across all queried regions. example: 42 page_number: type: integer description: Current page number (1-based), matching the requested page[number]. example: 1 page_size: type: integer description: Number of results per page, matching the requested page[size]. example: 20 usage-reports_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorRecord' usage-reports_RecordType: type: object description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records properties: record_type: type: string description: Telnyx Product type example: conversation_event product_dimensions: type: array description: Telnyx Product Dimensions example: - direction - currency - message_type items: type: string product_metrics: type: array description: Telnyx Product Metrics example: - cost - billed_sec items: type: string usage_reports_usage_reports_ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorRecord' usage_reports_usage_reports_RecordType: type: object description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records properties: record_type: type: string description: Telnyx Product type example: conversation_event product_dimensions: type: array description: Telnyx Product Dimensions example: - direction - currency - message_type items: type: string product_metrics: type: array description: Telnyx Product Metrics example: - cost - billed_sec items: type: string usage_reports_usage_reports_SourceResponse: type: object properties: pointer: type: string description: A JSON Pointer [RFC6901] to the associated entity in the request document example: /title parameter: type: string description: a string indicating which URI query parameter caused the error example: metrics usage_reports_usage_reports_UsageReportsOptionsRecord: type: object description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records properties: product: type: string description: Telnyx Product example: wireless product_dimensions: type: array description: Telnyx Product Dimensions example: - mnc - mcc - sim_card_id - sim_group_name items: type: string product_metrics: type: array description: Telnyx Product Metrics example: - uplink_data_bytes - downlink_data - downlink_data_bytes - uplink_data - data_cost items: type: string record_types: type: array description: Subproducts if applicable items: $ref: '#/components/schemas/usage_reports_usage_reports_RecordType' user-addresses_UserAddress: type: object title: UserAddress properties: id: type: string format: uuid description: Uniquely identifies the user address. example: c3527e69-dc5a-4b3e-8f44-99d209f83c1d record_type: type: string description: Identifies the type of the resource. example: user_address customer_reference: $ref: '#/components/schemas/customer_reference' first_name: $ref: '#/components/schemas/user-addresses_first_name_26a215df92' last_name: $ref: '#/components/schemas/user-addresses_last_name_26a215df92' business_name: $ref: '#/components/schemas/user-addresses_business_name_26a215df92' phone_number: $ref: '#/components/schemas/user-addresses_phone_number_26a215df92' street_address: $ref: '#/components/schemas/user-addresses_street_address_26a215df92' extended_address: $ref: '#/components/schemas/user-addresses_extended_address_26a215df92' locality: $ref: '#/components/schemas/user-addresses_locality_26a215df92' administrative_area: $ref: '#/components/schemas/user-addresses_administrative_area_26a215df92' neighborhood: $ref: '#/components/schemas/user-addresses_neighborhood_26a215df92' borough: $ref: '#/components/schemas/user-addresses_borough_26a215df92' postal_code: $ref: '#/components/schemas/user-addresses_postal_code_26a215df92' country_code: $ref: '#/components/schemas/user-addresses_country_code_26a215df92' created_at: type: string description: ISO 8601 formatted date indicating when the resource was created. example: '2018-02-02T22:25:27.521Z' updated_at: type: string description: ISO 8601 formatted date indicating when the resource was updated. example: '2018-02-02T22:25:27.521Z' user-addresses_UserAddressCreate: type: object required: - first_name - last_name - business_name - street_address - locality - country_code properties: customer_reference: $ref: '#/components/schemas/customer_reference' first_name: $ref: '#/components/schemas/user-addresses_first_name_26a215df92' last_name: $ref: '#/components/schemas/user-addresses_last_name_26a215df92' business_name: $ref: '#/components/schemas/user-addresses_business_name_26a215df92' phone_number: $ref: '#/components/schemas/user-addresses_phone_number_26a215df92' street_address: $ref: '#/components/schemas/user-addresses_street_address_26a215df92' extended_address: $ref: '#/components/schemas/user-addresses_extended_address_26a215df92' locality: $ref: '#/components/schemas/user-addresses_locality_26a215df92' administrative_area: $ref: '#/components/schemas/user-addresses_administrative_area_26a215df92' neighborhood: $ref: '#/components/schemas/user-addresses_neighborhood_26a215df92' borough: $ref: '#/components/schemas/user-addresses_borough_26a215df92' postal_code: $ref: '#/components/schemas/user-addresses_postal_code_26a215df92' country_code: $ref: '#/components/schemas/user-addresses_country_code_26a215df92' skip_address_verification: $ref: '#/components/schemas/skip_address_verification' user-addresses_administrative_area: type: string description: The locality of the user address. For US addresses, this corresponds to the state of the address. example: TX user-addresses_administrative_area_26a215df92: type: string description: The locality of the user address. For US addresses, this corresponds to the state of the address. example: TX user-addresses_borough: type: string description: The borough of the user address. This field is not used for addresses in the US but is used for some international addresses. example: Guadalajara user-addresses_borough_26a215df92: type: string description: The borough of the user address. This field is not used for addresses in the US but is used for some international addresses. example: Guadalajara user-addresses_business_name: type: string description: The business name associated with the user address. example: Toy-O'Kon user-addresses_business_name_26a215df92: type: string description: The business name associated with the user address. example: Toy-O'Kon user-addresses_country_code: type: string description: The two-character (ISO 3166-1 alpha-2) country code of the user address. example: US user-addresses_country_code_26a215df92: type: string description: The two-character (ISO 3166-1 alpha-2) country code of the user address. example: US user-addresses_extended_address: type: string description: Additional street address information about the user address such as, but not limited to, unit number or apartment number. example: 14th Floor user-addresses_extended_address_26a215df92: type: string description: Additional street address information about the user address such as, but not limited to, unit number or apartment number. example: 14th Floor user-addresses_first_name: type: string description: The first name associated with the user address. example: Alfred user-addresses_first_name_26a215df92: type: string description: The first name associated with the user address. example: Alfred user-addresses_last_name: type: string description: The last name associated with the user address. example: Foster user-addresses_last_name_26a215df92: type: string description: The last name associated with the user address. example: Foster user-addresses_locality: type: string description: The locality of the user address. For US addresses, this corresponds to the city of the address. example: Austin user-addresses_locality_26a215df92: type: string description: The locality of the user address. For US addresses, this corresponds to the city of the address. example: Austin user-addresses_neighborhood: type: string description: The neighborhood of the user address. This field is not used for addresses in the US but is used for some international addresses. example: Ciudad de los deportes user-addresses_neighborhood_26a215df92: type: string description: The neighborhood of the user address. This field is not used for addresses in the US but is used for some international addresses. example: Ciudad de los deportes user-addresses_phone_number: type: string description: The phone number associated with the user address. example: '+12125559000' user-addresses_phone_number_26a215df92: type: string description: The phone number associated with the user address. example: '+12125559000' user-addresses_postal_code: type: string description: The postal code of the user address. example: '78701' user-addresses_postal_code_26a215df92: type: string description: The postal code of the user address. example: '78701' user-addresses_street_address: type: string description: The primary street address information about the user address. example: 600 Congress Avenue user-addresses_street_address_26a215df92: type: string description: The primary street address information about the user address. example: 600 Congress Avenue user-tags_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string users_ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string meta: type: object properties: url: type: string format: uri title: type: string source: type: object properties: pointer: type: string users_PaginationMeta: title: Pagination Meta type: object properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 validate_address: type: boolean description: 'Indicates whether or not the address should be validated for emergency use upon creation or not. This should be left with the default value of `true` unless you have used the `/addresses/actions/validate` endpoint to validate the address separately prior to creation. If an address is not validated for emergency use upon creation and it is not valid, it will not be able to be used for emergency services. In an address record, this flag indicates whether emergency validation was performed at creation: `true` means the record passed emergency validation before it was created; `false` means validation was skipped during this creation request, and the address may have been validated separately. This flag is not a current validity status; emergency use still requires a valid address.' example: true default: true verified-numbers_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object properties: url: type: string description: URL with additional information on the error. type: object verified-numbers_Meta: type: object properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 verify_Error: required: - code - title properties: code: type: string example: '10015' title: type: string example: Invalid sorting value detail: type: string example: The value provided for sorting is not valid. Check the value used and try again. source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string example: /sort parameter: description: Indicates which query parameter caused the error. type: string meta: type: object properties: url: type: string description: URL with additional information on the error. example: https://developers.telnyx.com/docs/overview/errors/10015 type: object verify_Meta: type: object required: - total_pages - total_results - page_size - page_number properties: total_pages: type: integer example: 3 total_results: type: integer example: 55 page_number: type: integer example: 2 page_size: type: integer example: 25 video_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object voice-channels_Error: required: - code - title properties: code: type: string title: type: string detail: type: string source: type: object properties: pointer: description: JSON pointer (RFC6901) to the offending entity. type: string parameter: description: Indicates which query parameter caused the error. type: string meta: type: object additionalProperties: true type: object voice-designs_ErrorObject: type: object description: A single error object. properties: code: type: string description: Telnyx-specific error code. title: type: string description: Short, human-readable summary of the error. detail: type: string description: Detailed, human-readable explanation of the error. source: type: object description: Reference to the source of the error. properties: pointer: type: string description: A JSON Pointer (RFC 6901) to the field that caused the error. voice-designs_ErrorResponse: type: object description: Standard error response envelope. properties: errors: type: array items: $ref: '#/components/schemas/voice-designs_ErrorObject' example: errors: - code: '10005' title: Resource not found detail: Voice design not found voice-designs_PaginationMeta: type: object description: Pagination metadata returned with list responses. properties: page_number: type: integer description: Current page number (1-based). page_size: type: integer description: Number of results per page. total_results: type: integer description: Total number of results across all pages. total_pages: type: integer description: Total number of pages. example: page_number: 1 page_size: 20 total_results: 42 total_pages: 3 voice-sdk-debug_PaginationMeta: type: object title: Pagination Meta properties: total_pages: type: integer example: 1 total_results: type: integer example: 1 page_number: type: integer example: 1 page_size: type: integer example: 20 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: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallAIGatherEndedEvent' example: data: record_type: event event_type: call.ai_gather.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' status: valid message_history: - content: Hello, can you tell me your age and where you live? role: assistant - content: Hello, I'm 29 and I live in Paris? role: user result: age: 29 city: Paris responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallAIGatherEnded tags: - Callbacks CallAIGatherMessageHistoryUpdated: post: summary: Call AI Gather Message History Updated description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallAIGatherMessageHistoryUpdatedEvent' example: data: record_type: event event_type: call.ai_gather.message_history_updated id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' message_history: - content: Hello, can you tell me your age and where you live? role: assistant - content: Hello, I'm 29 and I live in Paris? role: user responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallAIGatherMessageHistoryUpdated tags: - Callbacks CallAIGatherPartialResults: post: summary: Call AI Gather Partial Results description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallAIGatherPartialResultsEvent' example: data: record_type: event event_type: call.ai_gather.partial_results id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' message_history: - content: Hello, can you tell me your age and where you live? role: assistant - content: Hello, I'm 29 and I live in Paris? role: user partial_results: age: 29 city: Paris responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallAIGatherPartialResults tags: - Callbacks TexmlAiGatherWebhook: post: operationId: TexmlAiGather summary: TeXML AI Gather description: 'Webhook sent when AI Gather completes with transcription results. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlAiGatherWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 Base64MessageHistory: W3sicm9sZSI6InVzZXIiLCJjb250ZW50IjoiSGVsbG8ifV0= Base64Result: eyJzdGF0dXMiOiJ2YWxpZCIsInJlc3VsdCI6eyJ0ZXh0IjoiSSB3b3VsZCBsaWtlIHRvIHNjaGVkdWxlIGFuIGFwcG9pbnRtZW50In19 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ ConnectionId: '1234567890' From: '+35319605860' Status: valid To: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlCallAmdWebhook: post: operationId: TexmlCallAmd summary: TeXML Call AMD description: 'Webhook sent when Answering Machine Detection (AMD) completes during a TeXML call. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCallAmdWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 AnsweredBy: human CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ ConnectionId: '1234567890' MachineDetectionDuration: '2500' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlCallAnsweredWebhook: post: operationId: TexmlCallAnswered summary: TeXML Call Answered description: 'Webhook sent when a TeXML call is answered. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCallAnsweredWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallDuration: '15' CallInitiatedAt: '2024-01-15T10:30:26.028Z' CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallStatus: in-progress CallbackSource: call-progress-events CallerId: John Doe Codec: PCMU ConnectionId: '1234567890' ErrorCode: '10001' ErrorMessage: Call failed From: '+35319605860' ParentCallSid: v3:parent-call-id ParentCallSidLegacy: v3:parent-call-id SamplingRate: '8000' SequenceNumber: 2 ShakenStirAttestation: A ShakenStirValidated: true Timestamp: '2024-01-15T10:30:00Z' To: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlCallCompletedWebhook: post: operationId: TexmlCallCompleted summary: TeXML Call Completed description: 'Webhook sent when a TeXML call is completed. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCallCompletedWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 AnsweredTime: '2024-01-15T10:30:15Z' CallControlId: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallDuration: '45' CallInitiatedAt: '2024-01-15T10:30:26.028Z' CallLegId: abc123-leg1 CallQualityStats: '{"mos":4.2,"jitter":10,"packet_loss":0.5}' CallSessionId: session-abc123 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallStatus: completed CallbackSource: call-progress-events CallerId: John Doe ConnectionId: '1234567890' DialCallDuration: '120' DialCallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ DialCallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ DialCallStatus: completed EndTime: '2024-01-15T10:31:00Z' ErrorCode: '10001' ErrorMessage: Call failed From: '+35319605860' HangupCause: normal_clearing HangupSource: caller OccurredAt: '2024-01-15T10:31:00Z' OrganizationId: org-abc123 ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg RecordingDuration: '90' RecordingUrl: https://api.telnyx.com/v2/recordings/abc123.wav SequenceNumber: 3 ShakenStirAttestation: A ShakenStirValidated: true SipHangupCause: '200' StartTime: '2024-01-15T10:30:00Z' Timestamp: '2024-01-15T10:30:00Z' To: '+13129457420' UserId: f5586561-8ff0-4291-a51b-c7dfe4139ff9 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlCallDtmfWebhook: post: operationId: TexmlCallDtmf summary: TeXML Call DTMF description: 'Webhook sent when a DTMF digit is received during a TeXML call. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCallDtmfWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallInitiatedAt: '2024-01-15T10:30:26.028Z' CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallStatus: dtmf CallbackSource: call-progress-events CallerId: John Doe ConnectionId: '1234567890' Digit: '5' ErrorCode: '10001' ErrorMessage: Call failed From: '+35319605860' ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg SequenceNumber: 3 ShakenStirAttestation: A ShakenStirValidated: true Timestamp: '2024-01-15T10:30:00Z' To: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlCallInitiatedWebhook: post: operationId: TexmlCallInitiated summary: TeXML Call Initiated description: 'Webhook sent when a TeXML call is initiated. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCallInitiatedWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallInitiatedAt: '2024-01-15T10:30:26.028Z' CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallStatus: initiated CallbackSource: call-progress-events CallerId: John Doe ConnectionId: '1234567890' ErrorCode: '10001' ErrorMessage: Call failed From: '+35319605860' ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg SequenceNumber: 0 ShakenStirAttestation: A ShakenStirValidated: true Timestamp: '2024-01-15T10:30:00Z' To: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlCallRingingWebhook: post: operationId: TexmlCallRinging summary: TeXML Call Ringing description: 'Webhook sent when a TeXML call is ringing. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlCallRingingWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallDuration: '10' CallInitiatedAt: '2024-01-15T10:30:26.028Z' CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallStatus: ringing CallbackSource: call-progress-events CallerId: John Doe ConnectionId: '1234567890' ErrorCode: '10001' ErrorMessage: Call failed From: '+35319605860' ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg SequenceNumber: 1 ShakenStirAttestation: A ShakenStirValidated: true Timestamp: '2024-01-15T10:30:00Z' To: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlConferenceEndWebhook: post: operationId: TexmlConferenceEnd summary: TeXML Conference End description: 'Webhook sent when a TeXML conference ends. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlConferenceEndWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallingPartyType: customer ConferenceSid: conf_abc123def456 ConnectionId: '1234567890' FriendlyName: MyConference From: '+35319605860' FromSipUri: sip:user@example.com ParticipantLabel: participant-1 SequenceNumber: 5 StatusCallbackEvent: conference-end Timestamp: '2024-01-15T11:30:00Z' To: '+13129457420' ToSipUri: sip:conference@example.com responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlConferenceJoinWebhook: post: operationId: TexmlConferenceJoin summary: TeXML Conference Join description: 'Webhook sent when a participant joins a TeXML conference. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlConferenceJoinWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallingPartyType: customer ConferenceSid: conf_abc123def456 ConnectionId: '1234567890' FriendlyName: MyConference From: '+35319605860' FromSipUri: sip:user@example.com ParticipantLabel: participant-1 SequenceNumber: 2 StatusCallbackEvent: participant-join Timestamp: '2024-01-15T10:31:00Z' To: '+13129457420' ToSipUri: sip:conference@example.com responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlConferenceLeaveWebhook: post: operationId: TexmlConferenceLeave summary: TeXML Conference Leave description: 'Webhook sent when a participant leaves a TeXML conference. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlConferenceLeaveWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallingPartyType: customer ConferenceSid: conf_abc123def456 ConnectionId: '1234567890' FriendlyName: MyConference From: '+35319605860' FromSipUri: sip:user@example.com ParticipantLabel: participant-1 SequenceNumber: 4 StatusCallbackEvent: participant-leave Timestamp: '2024-01-15T11:00:00Z' To: '+13129457420' ToSipUri: sip:conference@example.com responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlConferenceSpeakerWebhook: post: operationId: TexmlConferenceSpeaker summary: TeXML Conference Speaker description: 'Webhook sent when a participant starts or stops speaking in a TeXML conference. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlConferenceSpeakerWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallingPartyType: customer ConferenceSid: conf_abc123def456 ConnectionId: '1234567890' FriendlyName: MyConference From: '+35319605860' FromSipUri: sip:user@example.com ParticipantLabel: participant-1 SequenceNumber: 3 StatusCallbackEvent: participant-speech-start Timestamp: '2024-01-15T10:35:00Z' To: '+13129457420' ToSipUri: sip:conference@example.com responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlConferenceStartWebhook: post: operationId: TexmlConferenceStart summary: TeXML Conference Start description: 'Webhook sent when a TeXML conference starts. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlConferenceStartWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallingPartyType: customer ConferenceSid: conf_abc123def456 ConnectionId: '1234567890' FriendlyName: MyConference From: '+35319605860' FromSipUri: sip:user@example.com ParticipantLabel: participant-1 SequenceNumber: 0 StatusCallbackEvent: conference-start Timestamp: '2024-01-15T10:30:00Z' To: '+13129457420' ToSipUri: sip:conference@example.com responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlGatherWebhook: post: operationId: TexmlGather summary: TeXML Gather description: 'Webhook sent when a Gather command completes (sent to the action URL). This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlGatherWebhookSchema' example: AccountSid: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b CallSid: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w CallSidLegacy: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w Confidence: 0.95 Digits: '1' From: Defaultj35z6@sip.telnyx.com SpeechResult: Please connect me to sales To: '+12132045020' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlHttpRequestWebhook: post: operationId: TexmlHttpRequest summary: TeXML HTTP Request description: 'Webhook sent as response to an HTTP Request instruction. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlHttpRequestWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallerId: John Doe CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ ConnectionId: '1234567890' From: '+35319605860' To: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlQueueWebhook: post: operationId: TexmlQueue summary: TeXML Queue description: 'Webhook sent for queue status events (triggered by Enqueue command waitUrl). This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlQueueWebhookSchema' example: AccountSid: 4e71926f-8f13-450e-b91c-23c2ef786aa6 AvgQueueTime: '45' CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ ConnectionId: '1234567890' CurrentQueueSize: '3' From: '+35319605860' QueuePosition: '2' QueueSid: my-queue QueueTime: '30' To: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlRecordingCompletedWebhook: post: operationId: TexmlRecordingCompleted summary: TeXML Recording Completed description: 'Webhook sent when a recording is completed during a TeXML call (triggered by recordingStatusCallbackEvent). This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlRecordingCompletedWebhookSchema' example: AccountSid: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b CallSid: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ CallSidLegacy: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ ConnectionId: '1234567890' RecordingChannels: 1 RecordingDuration: '5' RecordingSid: 35094891-3290-4142-b2c2-b2eda57534cf RecordingSource: DialVerb RecordingStatus: completed RecordingUrl: https://recording.com/your-recording-url responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlRecordingInProgressWebhook: post: operationId: TexmlRecordingInProgress summary: TeXML Recording In-Progress description: 'Webhook sent when a recording starts during a TeXML call (triggered by recordingStatusCallbackEvent). This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlRecordingInProgressWebhookSchema' example: AccountSid: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b CallSid: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ CallSidLegacy: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ ConnectionId: '1234567890' RecordingChannels: 1 RecordingSid: 35094891-3290-4142-b2c2-b2eda57534cf RecordingSource: DialVerb RecordingStatus: in-progress responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlReferStatusWebhook: post: operationId: TexmlReferStatus summary: TeXML Refer Status description: 'Webhook sent for SIP REFER status updates. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlReferStatusWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ NotifySipResponseCode: '200' ReferCallStatus: in-progress ReferSipResponseCode: '202' Timestamp: '2024-01-15T10:30:00Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlSiprecWebhook: post: operationId: TexmlSiprec summary: TeXML SIPREC description: 'Webhook sent for SIPREC session status updates. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlSiprecWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ SiprecError: SIPREC connection failed SiprecEvent: siprec-started SiprecSid: siprec-abc123 Timestamp: '2024-01-15T10:30:00Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlStreamWebhook: post: operationId: TexmlStream summary: TeXML Stream description: 'Webhook sent for media streaming status updates. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlStreamWebhookSchema' example: AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9 CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ StreamError: Connection timeout StreamEvent: stream-started StreamName: my_stream StreamSid: stream-abc123 Timestamp: '2024-01-15T10:30:00Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks TexmlTranscriptionWebhook: post: operationId: TexmlTranscription summary: TeXML Transcription description: 'Webhook sent when a recording transcription is completed. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TexmlTranscriptionWebhookSchema' example: AccountSid: 61bf923e-5e4d-4595-a110-56190ea18a1b CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ CallStatus: in-progress From: '+35319605860' RecordingSid: 35094891-3290-4142-b2c2-b2eda57534cf RecordingUrl: https://api.telnyx.com/v2/recordings/abc123.wav To: '+13129457420' TranscriptionSid: b08f0fa1-a32c-4218-b3b5-9cf78941ccac TranscriptionStatus: completed TranscriptionText: Good morning, how may I help you? responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks artifactCompleted: post: summary: artifact.completed description: 'Sent when an artifact finishes generating -- `summary`, `action_items`, `decisions`, `topics`, `open_questions` or `custom`. Deliveries are best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.' tags: - Meeting Session Webhooks parameters: - name: X-Meeting-Bot-Signature in: header required: true description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time. Reject timestamps outside your accepted skew. No bearer token is sent. schema: type: string example: t=1784297100,v1=5e8f...a3c1 requestBody: required: true content: application/json: schema: type: object required: - id - event - version - occurred_at - data properties: id: type: string description: Unique event id; deduplicate deliveries on it. example: whdel_9f2c... event: type: string description: Event type. enum: - artifact.completed version: type: string description: Envelope version. example: '1' occurred_at: type: string format: date-time description: When the event occurred. data: type: object properties: session_id: type: string description: The meeting session this event belongs to. example: mtgsess_9b2f... artifact_id: type: string description: Id of the completed artifact. example: mtgart_4e7c... type: type: string enum: - summary - action_items - decisions - topics - open_questions - custom description: Type of the completed artifact. content: type: object properties: text: type: string description: Generated artifact text. description: Generated artifact content. additionalProperties: false required: - text model_provenance: type: object properties: model: type: string provider: type: string description: Model that generated the artifact. additionalProperties: false required: - model - provider prompt: anyOf: - type: string - type: 'null' description: The prompt that produced this artifact, or null for a named type. Non-null only when `type` is `custom`; the five named types always return `null`. description: Completed artifact, including its generated content. required: - session_id - artifact_id - type - content - model_provenance - prompt additionalProperties: false additionalProperties: false example: id: whdel_9f2c... event: artifact.completed version: '1' occurred_at: '2026-06-16T09:06:00Z' data: session_id: mtgsess_9b2f... artifact_id: mtgart_4e7c... type: summary content: text: 'Decisions: hold pricing flat through Q3. Actions: Casey to send the summary.' model_provenance: model: example-model provider: telnyx prompt: null responses: '200': description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried. operationId: MeetingArtifactCompletedWebhook security: [] artifactFailed: post: summary: artifact.failed description: 'Sent when an artifact generation fails. Deliveries are best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.' tags: - Meeting Session Webhooks parameters: - name: X-Meeting-Bot-Signature in: header required: true description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time. Reject timestamps outside your accepted skew. No bearer token is sent. schema: type: string example: t=1784297100,v1=5e8f...a3c1 requestBody: required: true content: application/json: schema: type: object required: - id - event - version - occurred_at - data properties: id: type: string description: Unique event id; deduplicate deliveries on it. example: whdel_9f2c... event: type: string description: Event type. enum: - artifact.failed version: type: string description: Envelope version. example: '1' occurred_at: type: string format: date-time description: When the event occurred. data: type: object properties: session_id: type: string description: The meeting session this event belongs to. example: mtgsess_9b2f... artifact_id: type: string description: Id of the failed artifact. example: mtgart_4e7c... type: type: string enum: - summary - action_items - decisions - topics - open_questions - custom description: Type of the failed artifact. description: Failed artifact reference and reason. additionalProperties: false required: - session_id - artifact_id - type additionalProperties: false example: id: whdel_9f2c... event: artifact.failed version: '1' occurred_at: '2026-06-16T09:06:00Z' data: session_id: mtgsess_9b2f... artifact_id: mtgart_4e7c... type: summary responses: '200': description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried. operationId: MeetingArtifactFailedWebhook security: [] callAnalyzed: post: summary: Call analyzed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details. Delivered after an AI assistant conversation ends and post-call processing completes. The payload consolidates the conversation''s generated insights, its recordings, and the call''s full cost breakdown (AI Voice Assistant engine minutes, LLM inference, call control, SIP trunking, recording).' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/callAnalyzedEvent' example: data: record_type: event event_type: call.analyzed id: afa6f4ac-f569-575b-9127-75a2746cf0ab occurred_at: '2026-10-15T20:38:46.308491Z' payload: assistant_id: assistant-258e1b9b-aa09-5f71-a931-56fd3cf2eb1c call_control_id: v3:b5aa7d950dfd551e916cc42bee82e56e-510c4d08 call_leg_id: 9f4eec6d-19a9-503f-be41-024cfaf1d5a6 call_session_id: 340a438e-f327-5f36-be97-e5c13bde3a05 client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '1294850382059482660' conversation_id: dc76aa9a-a1c2-5e6b-aed4-6775fe240151 conversation_insights: - conversation_insights: - insight_id: 6c5018ff-25a2-5364-b6be-f53de3d493c6 result: The user called the voice assistant to schedule a dental appointment. The assistant confirmed availability for Tuesday at 10:00 AM and transferred the call to the office scheduling line to complete the booking. status: completed cost: breakdown: - cost: '0.050000' product: ai-voice-assistant - cost: '0.003600' product: callcontrol-cdrs - cost: '0.000900' product: inference - cost: '0.000800' product: recording-cdrs - cost: '0.005000' product: siptrunking-cdrs currency: USD total: '0.060300' duration_sec: 37 from: +131****7421 llm_model: moonshotai/Kimi-K2.6 reason: normal recordings: - channels: dual download_urls: mp3: https://storage.telnyx.com/recordings/06069104-45f7-5d17-9fa7-34cfeb4534fa/2026-10-15/9f4eec6d-19a9-503f.mp3 end_time: '2026-10-15T20:34:52.395814Z' format: mp3 id: 850f003e-1278-5d6b-baf2-918aae3031dc start_time: '2026-10-15T20:34:07.955834Z' stt_model: deepgram/flux to: +131****4802 tts_model_id: Ultra tts_provider: telnyx tts_voice_id: c80920a7-535c-5d39-b630-8ddf52d5a4f0 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallAnalyzed tags: - Callbacks callAnswered: post: summary: Call Answered description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallAnsweredEvent' example: data: record_type: event event_type: call.answered id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' start_time: '2018-02-02T22:25:27.521992Z' state: answered responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallAnswered tags: - Callbacks callBridged: post: summary: Call Bridged description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallBridgedEvent' example: data: record_type: event event_type: call.bridged id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallBridged tags: - Callbacks callConversationCreated: post: summary: Call Conversation Created description: 'Emitted when a conversation is created for a call, including when an AI assistant starts automatically after an `answer` command with `assistant.id` or a `dial` command with `assistant.id`, or through `ai_assistant_start` or `gather_using_ai`. Read `data.payload.conversation_id` and correlate it with `data.payload.call_control_id`. For the answer-with-assistant flow, the `answer` response does not include the conversation ID. This webhook supplies it during assistant startup without waiting for `call.conversation.ended` or polling the Conversations API. It is delivered to the configured Call Control webhook URL and does not require `send_message_history_updates`. The event indicates that the conversation was created; it does not confirm that the assistant is ready to speak or that greeting audio has started. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/callConversationCreatedEvent' example: data: record_type: event event_type: call.conversation.created id: eb8775a6-634f-48b0-b177-d5465a8a8e9f occurred_at: '2025-05-29T13:35:38.817785Z' created_at: '2025-05-29T13:35:38.927621Z' payload: call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20 call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '2694492062593582591' conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe from: '+13124287921' to: '+13125550100' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallConversationCreated tags: - Callbacks callConversationEnded: post: summary: Call Conversation Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/callConversationEndedEvent' example: data: record_type: event event_type: call.conversation.ended id: eb8775a6-634f-48b0-b177-d5465a8a8e9f occurred_at: '2025-05-29T13:35:38.817785Z' created_at: '2025-05-29T13:35:38.927621Z' payload: assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20 call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 calling_party_type: sip client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '2694492062593582591' conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe duration_sec: 3 from: '+13124287921' to: jamesw@assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d.sip.telnyx.com llm_model: openai/gpt-4o stt_model: distil-whisper/distil-large-v2 tts_model_id: Natural tts_provider: telnyx tts_voice_id: Marissa reason: customer_disconnect messages: - role: assistant content: Hi, how can I help you today? timestamp: '2025-05-29T13:35:35.912345Z' - role: user content: Goodbye. timestamp: '2025-05-29T13:35:37.654321Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallConversationEnded tags: - Callbacks callConversationInsightsGenerated: post: summary: Call Conversation Insights Generated description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/callConversationInsightsGeneratedEvent' example: data: record_type: event event_type: call.conversation_insights.generated id: 898e96ef-be63-45aa-9e7d-01332bff9a97 occurred_at: '2025-02-19T17:02:49.371454Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d calling_party_type: pstn insight_group_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 results: - insight_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 result: The user inquired about the menu at Ember & Oak. The menu offers various options, including vegetarian, vegan, and gluten-free dishes, as well as a children's menu. The restaurant also has a daily happy hour from 4 PM to 6 PM and offers takeaway and delivery services. The user found the information helpful but had to leave without making any further decisions or requests. No specific preferences or goals were expressed beyond inquiring about the menu. responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallConversationInsightsGenerated tags: - Callbacks callConversationStartFailed: post: summary: Call Conversation Start Failed description: 'Emitted when an AI assistant requested with an `answer` or `dial` command (`assistant.id`) could not be started after the call was answered, for example because the assistant ID does not exist. No conversation is created, so neither `call.conversation.created` nor `call.conversation.ended` is sent for this attempt. The call stays answered: use this event to continue the call, for example by transferring it, playing a message, or hanging up. `data.payload.reason` is `invalid_request` when the request was rejected and `service_error` otherwise. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/callConversationStartFailedEvent' example: data: record_type: event event_type: call.conversation.start_failed id: 3f1c2a9e-8d4b-4c6e-9a7f-1b2c3d4e5f60 occurred_at: '2025-05-29T13:35:38.817785Z' created_at: '2025-05-29T13:35:38.927621Z' payload: assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20 call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20 client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl connection_id: '2694492062593582591' from: '+13124287921' to: '+13125550100' reason: invalid_request responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallConversationStartFailed tags: - Callbacks callCost: post: summary: Call Cost description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallCostEvent' example: data: record_type: event event_type: call.cost id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d billing_group_id: f5586561-8ff0-4291-a0ac-84fe544797bd status: success total_cost: '0.0106' billed_duration_secs: 120 cost_parts: - call_part: sip-trunking rate: '0.0050' cost: '0.0050' currency: USD billed_duration_secs: 60 - call_part: call-recording rate: '0.00190' cost: '0.0038' currency: USD billed_duration_secs: 120 - call_part: call-control rate: '0.00180' cost: '0.0018' currency: USD billed_duration_secs: 60 occurred_at: '2018-02-02T22:25:27.521992Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallCost tags: - Callbacks callDeepfakeDetectionError: post: summary: Call Deepfake Detection Error description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallDeepfakeDetectionErrorEvent' example: data: record_type: event event_type: call.deepfake_detection.error id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d error_message: detection_timeout responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallDeepfakeDetectionError tags: - Callbacks callDeepfakeDetectionResult: post: summary: Call Deepfake Detection Result description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallDeepfakeDetectionResultEvent' example: data: record_type: event event_type: call.deepfake_detection.result id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d result: fake score: 0.87 consistency: 94.5 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallDeepfakeDetectionResult tags: - Callbacks callDtmfReceived: post: summary: Call Dtmf Received description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallDtmfReceivedEvent' example: data: record_type: event event_type: call.dtmf.received id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' digit: '#' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallDtmfReceived tags: - Callbacks callEnqueued: post: summary: Call Enqueued description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallEnqueuedEvent' example: data: record_type: event event_type: call.enqueued id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d queue: support current_position: 5 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallEnqueued tags: - Callbacks callForkStarted: post: summary: Call Fork Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallForkStartedEvent' example: data: record_type: event event_type: call.fork.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_type: decrypted responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallForkStarted tags: - Callbacks callForkStopped: post: summary: Call Fork Stopped description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallForkStoppedEvent' example: data: record_type: event event_type: call.fork.stopped id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_type: decrypted responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallForkStopped tags: - Callbacks callGatherEnded: post: summary: Call Gather Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallGatherEndedEvent' example: data: record_type: event event_type: call.gather.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' digits: '123' status: valid responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallGatherEnded tags: - Callbacks callHangup: post: summary: Call Hangup description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallHangupEvent' example: data: record_type: event event_type: call.hangup id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' start_time: '2018-02-02T22:20:27.521992Z' state: hangup hangup_cause: call_rejected hangup_source: caller sip_hangup_cause: '603' call_quality_stats: inbound: jitter_max_variance: '2.74' jitter_packet_count: '0' mos: '4.50' packet_count: '591' skip_packet_count: '9' outbound: packet_count: '0' skip_packet_count: '0' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallHangup tags: - Callbacks callHold: post: summary: Call Hold description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallHoldEvent' example: data: record_type: event event_type: call.hold id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallHold tags: - Callbacks callInitiated: post: operationId: CallInitiated summary: Call Initiated description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallInitiatedEvent' example: data: record_type: event event_type: call.initiated id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' direction: incoming state: parked responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks callLeftQueue: post: summary: Call Left Queue description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallLeftQueueEvent' example: data: record_type: event event_type: call.dequeued id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d queue: support queue_position: 3 reason: leave responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallLeftQueue tags: - Callbacks callMachineDetectionEnded: post: summary: Call Machine Detection Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallMachineDetectionEndedEvent' example: data: record_type: event event_type: call.machine.detection.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: human responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallMachineDetectionEnded tags: - Callbacks callMachineGreetingEnded: post: summary: Call Machine Greeting Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallMachineGreetingEndedEvent' example: data: record_type: event event_type: call.machine.greeting.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: ended responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallMachineGreetingEnded tags: - Callbacks callMachinePremiumCallScreeningDetected: post: summary: Call Machine Premium Call Screening Detected description: ' This webhook is sent when `answering_machine_detection=premium_ios_call_screening_detection` detects an Apple Call Screening tone. Premium AMD is then restarted on the screened call; expect another `call.machine.premium.detection.ended` webhook with the post-screening classification. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallMachinePremiumCallScreeningDetectedEvent' example: data: record_type: event event_type: call.machine.premium.call_screening.detected id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: screening responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallMachinePremiumCallScreeningDetected tags: - Callbacks callMachinePremiumDetectionEnded: post: summary: Call Machine Premium Detection Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallMachinePremiumDetectionEndedEvent' example: data: record_type: event event_type: call.machine.premium.detection.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: machine responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallMachinePremiumDetectionEnded tags: - Callbacks callMachinePremiumDetectionStarted: post: summary: Call Machine Premium Detection Started description: ' This webhook is sent when Premium AMD starts analyzing the answered call, before the `call.machine.premium.detection.ended` webhook with the analysis result. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallMachinePremiumDetectionStartedEvent' example: data: record_type: event event_type: call.machine.premium.detection.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallMachinePremiumDetectionStarted tags: - Callbacks callMachinePremiumGreetingEnded: post: summary: Call Machine Premium Greeting Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallMachinePremiumGreetingEndedEvent' example: data: record_type: event event_type: call.machine.premium.greeting.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' result: beep_detected responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallMachinePremiumGreetingEnded tags: - Callbacks callPaymentCompleted: post: summary: Call Payment Completed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallPaymentCompletedEvent' example: data: record_type: event event_type: call.payment.completed id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-07-27T07:00:00.000000Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 from: +353****5860 to: +131****7420 payment_connector: Default payment_method: credit-card payment_card_type: visa payment_card_number: xxxxxxxxxxxx1111 expiration_date: '1230' security_code: xxx payment_card_postal_code: '10001' result: success charge_id: ch_abc123 payment_confirmation_code: CONF-98765 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallPaymentCompleted tags: - Callbacks callPaymentProgress: post: summary: Call Payment Progress description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallPaymentProgressEvent' example: data: record_type: event event_type: call.payment.progress id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-07-27T07:00:00.000000Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 from: +353****5860 to: +131****7420 payment_connector: Default payment_method: credit-card payment_step: payment-card-number payment_status: completed attempt: 1 payment_card_type: visa payment_card_number: xxxxxxxxxxxx1111 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallPaymentProgress tags: - Callbacks callPlaybackEnded: post: summary: Call Playback Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallPlaybackEndedEvent' example: data: record_type: event event_type: call.playback.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d media_name: my_media_uploaded_to_media_storage_api overlay: false status: completed responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallPlaybackEnded tags: - Callbacks callPlaybackStarted: post: summary: Call Playback Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallPlaybackStartedEvent' example: data: record_type: event event_type: call.playback.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d media_url: http://example.com/audio.wav overlay: false responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallPlaybackStarted tags: - Callbacks callRecordingError: post: summary: Call Recording Error description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/callRecordingErrorEvent' example: data: record_type: event event_type: call.recording.error id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d reason: Internal server error responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallRecordingError tags: - Callbacks callRecordingSaved: post: summary: Call Recording Saved description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallRecordingSavedEvent' example: data: record_type: event event_type: call.recording.saved id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d recording_started_at: '2018-02-02T22:20:27.521992Z' recording_ended_at: '2018-02-02T22:20:27.521992Z' channels: single recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav public_recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallRecordingSaved tags: - Callbacks callRecordingTranscriptionSaved: post: summary: Call Recording Transcription Saved description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/callRecordingTranscriptionSavedEvent' example: data: record_type: event event_type: call.recording.transcription.saved id: 898e96ef-be63-45aa-9e7d-01332bff9a97 occurred_at: '2025-02-19T17:02:49.371454Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d calling_party_type: pstn recording_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 recording_transcription_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 status: completed transcription_text: Hi! responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallRecordingTranscriptionSaved tags: - Callbacks callReferCompleted: post: summary: Call Refer Completed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallReferCompletedEvent' example: data: record_type: event event_type: call.refer.completed id: 4ce4366d-8d87-44be-a00b-942154e9c5f5 occurred_at: '2020-03-30T13:29:44.650000Z' payload: call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969 call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d connection_id: '1289082222292239760' from: '+35319605860' sip_notify_response: 200 to: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallReferCompleted tags: - Callbacks callReferFailed: post: summary: Call Refer Failed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallReferFailedEvent' example: data: record_type: event event_type: call.refer.failed id: fbeb70e0-54eb-4e26-8d19-56b43e66f754 occurred_at: '2020-03-30T13:29:42.130013Z' payload: call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969 call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d connection_id: '1289082222292239760' from: '+35319605860' sip_notify_response: 603 to: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallReferFailed tags: - Callbacks callReferStarted: post: summary: Call Refer Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallReferStartedEvent' example: data: record_type: event event_type: call.refer.started id: fbeb70e0-54eb-4e26-8d19-56b43e66f754 occurred_at: '2020-03-30T13:29:42.130013Z' payload: call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969 call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d connection_id: '1289082222292239760' from: '+35319605860' sip_notify_response: 100 to: '+13129457420' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallReferStarted tags: - Callbacks callSiprecFailed: post: summary: Call Siprec Failed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallSiprecFailedEvent' example: data: record_type: event event_type: siprec.failed id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d failure_cause: no_answer responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallSiprecFailed tags: - Callbacks callSiprecStarted: post: summary: Call Siprec Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallSiprecStartedEvent' example: data: record_type: event event_type: siprec.started id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031 occurred_at: '2021-12-15T14:06:32.059436Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallSiprecStarted tags: - Callbacks callSiprecStopped: post: summary: Call Siprec Stopped description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallSiprecStoppedEvent' example: data: record_type: event event_type: siprec.stopped id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d hangup_cause: normal_clearing responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallSiprecStopped tags: - Callbacks callSpeakEnded: post: summary: Call Speak Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallSpeakEndedEvent' example: data: record_type: event event_type: call.speak.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d status: completed responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallSpeakEnded tags: - Callbacks callSpeakStarted: post: summary: Call Speak Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallSpeakStartedEvent' example: data: record_type: event event_type: call.speak.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallSpeakStarted tags: - Callbacks callStreamingFailed: post: summary: Call Streaming Failed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallStreamingFailedEvent' example: data: record_type: event event_type: streaming.failed id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d failure_reason: connection_failed stream_id: 1edb94f9-7ef0-4150-b502-e0ebadfd9491 stream_params: stream_url: wss://www.example.com/websocket track: inbound_track stream_type: websocket responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallStreamingFailed tags: - Callbacks callStreamingStarted: post: summary: Call Streaming Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallStreamingStartedEvent' example: data: record_type: event event_type: streaming.started id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031 occurred_at: '2021-12-15T14:06:32.059436Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_url: wss://www.example.com/websocket responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallStreamingStarted tags: - Callbacks callStreamingStopped: post: summary: Call Streaming Stopped description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallStreamingStoppedEvent' example: data: record_type: event event_type: streaming.stopped id: 25dc3731-e51e-4927-a50d-a61cc25984b1 occurred_at: '2021-12-15T14:11:24.613295Z' payload: call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d stream_url: wss://www.example.com/websocket responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallStreamingStopped tags: - Callbacks callUnhold: post: summary: Call Unhold description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CallUnholdEvent' example: data: record_type: event event_type: call.unhold id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d from: '+35319605860' to: '+35319605860' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: CallUnhold tags: - Callbacks campaignStatusUpdate: post: operationId: CampaignStatusUpdate summary: Campaign Status Update description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CampaignStatusUpdateEvent' example: brandId: d88dd2aa-1bb9-4ef0-9ec8-1752b80316a5 campaignId: 4b300178-131c-d902-d54e-72d90ba1620j createDate: CreateDate cspId: Cspid isTMobileRegistered: false type: TELNYX_EVENT description: Campaign has been marked as dormant status: DORMANT responses: '200': description: The server must return a HTTP 200, otherwise we will reattempt to deliver the webhook to the failover URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks conferenceCreated: post: summary: Conference Created description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceCreatedEvent' example: data: record_type: event event_type: conference.created id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceCreated tags: - Callbacks conferenceEnded: post: summary: Conference Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceEndedEvent' example: data: record_type: event event_type: conference.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' reason: host_left responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceEnded tags: - Callbacks conferenceFloorChanged: post: summary: Conference Floor Changed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceFloorChangedEvent' example: record_type: event event_type: conference.floor.changed id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceFloorChanged tags: - Callbacks conferenceParticipantJoined: post: summary: Conference Participant Joined description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantJoinedEvent' example: data: record_type: event event_type: conference.participant.joined id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceParticipantJoined tags: - Callbacks conferenceParticipantLeft: post: summary: Conference Participant Left description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantLeftEvent' example: data: record_type: event event_type: conference.participant.left id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceParticipantLeft tags: - Callbacks conferenceParticipantPlaybackEnded: post: summary: Conference Participant Playback Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantPlaybackEndedEvent' example: data: record_type: event event_type: conference.participant.playback.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceParticipantPlaybackEnded tags: - Callbacks conferenceParticipantPlaybackStarted: post: summary: Conference Participant Playback Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantPlaybackStartedEvent' example: data: record_type: event event_type: conference.participant.playback.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceParticipantPlaybackStarted tags: - Callbacks conferenceParticipantSpeakEnded: post: summary: Conference Participant Speak Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantSpeakEndedEvent' example: data: record_type: event event_type: conference.participant.speak.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceParticipantSpeakEnded tags: - Callbacks conferenceParticipantSpeakStarted: post: summary: Conference Participant Speak Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceParticipantSpeakStartedEvent' example: data: record_type: event event_type: conference.participant.speak.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg connection_id: 7267xxxxxxxxxxxxxx call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceParticipantSpeakStarted tags: - Callbacks conferencePlaybackEnded: post: summary: Conference Playback Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferencePlaybackEndedEvent' example: data: record_type: event event_type: conference.playback.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferencePlaybackEnded tags: - Callbacks conferencePlaybackStarted: post: summary: Conference Playback Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferencePlaybackStartedEvent' example: data: record_type: event event_type: conference.playback.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 media_url: https://www.example.com/audio.mp3 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferencePlaybackStarted tags: - Callbacks conferenceRecordingSaved: post: summary: Conference Recording Saved description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceRecordingSavedEvent' example: data: record_type: event event_type: conference.recording.saved id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d channels: single conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 connection_id: 7267xxxxxxxxxxxxxx format: mp3 public_recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav recording_ended_at: '2018-02-02T22:20:27.521992Z' recording_id: 4577f9a2-cf0e-44f3-ac57-9f95fb03fa47 recording_started_at: '2021-05-11T10:17:03.692107Z' recording_urls: mp3: http://example.com/recording.mp3 wav: http://example.com/recording.wav responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceRecordingSaved tags: - Callbacks conferenceSpeakEnded: post: summary: Conference Speak Ended description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceSpeakEndedEvent' example: data: record_type: event event_type: conference.speak.ended id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceSpeakEnded tags: - Callbacks conferenceSpeakStarted: post: summary: Conference Speak Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConferenceSpeakStartedEvent' example: data: record_type: event event_type: conference.speak.started id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 payload: connection_id: 7267xxxxxxxxxxxxxx creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1 occurred_at: '2018-02-02T22:25:27.521Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ConferenceSpeakStarted tags: - Callbacks deliveryUpdate: post: summary: Delivery Update description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MessagingOutboundMessageEvent' example: data: record_type: event id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323 event_type: message.sent occurred_at: '2019-01-23T18:10:02.574Z' payload: record_type: message direction: outbound id: 40385f64-5717-4562-b3fc-2c963f66afa6 type: MMS messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18445550001' carrier: TELNYX LLC line_type: VoIP to: - phone_number: '+18665550001' status: queued carrier: T-MOBILE USA, INC. line_type: Wireless cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: - url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png content_type: null sha256: null size: null webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] meta: attempt: 1 delivered_to: https://www.example.com/hooks responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: DeliveryUpdate tags: - Callbacks fax.delivered: post: summary: Fax Delivered description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FaxDelivered' example: data: event_type: fax.delivered id: 95479a2e-b947-470a-a88f-2da6dd07ae0f occurred_at: '2020-05-05T13:08:22.039204Z' payload: call_duration_secs: 25 connection_id: '234423' direction: outbound fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784 from: '+17733372107' original_media_url: http://www.example.com/fax.pdf page_count: 2 status: delivered client_state: aGF2ZSBhIG5pY2UgZGF5ID1d to: '+15107882622' user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8 record_type: event meta: attempt: 1 delivered_to: https://www.example.com/webhooks responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: FaxDelivered tags: - Callbacks fax.failed: post: summary: Fax Failed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FaxFailed' example: data: event_type: fax.failed id: 95479a2e-b947-470a-a88f-2da6dd07ae0f occurred_at: '2020-05-05T13:08:22.039204Z' payload: connection_id: '234423' direction: outbound failure_reason: receiver_call_dropped internal_failure_reason: fs_fax_call_dropped fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784 from: '+17733372107' original_media_url: http://www.example.com/fax.pdf status: failed client_state: aGF2ZSBhIG5pY2UgZGF5ID1d to: '+15107882622' user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8 record_type: event meta: attempt: 1 delivered_to: https://www.example.com/webhooks responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: FaxFailed tags: - Callbacks fax.media.processed: post: summary: Fax Media Processed description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FaxMediaProcessed' example: data: event_type: fax.media.processed id: 95479a2e-b947-470a-a88f-2da6dd07ae0f occurred_at: '2020-05-05T13:08:22.039204Z' payload: connection_id: '234423' direction: outbound fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784 from: '+17733372107' original_media_url: http://www.example.com/fax.pdf status: media.processed client_state: aGF2ZSBhIG5pY2UgZGF5ID1d to: '+15107882622' user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8 record_type: event meta: attempt: 1 delivered_to: https://www.example.com/webhooks responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: FaxMediaProcessed tags: - Callbacks fax.queued: post: operationId: FaxQueued summary: Fax Queued description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FaxQueued' example: data: event_type: fax.queued id: 95479a2e-b947-470a-a88f-2da6dd07ae0f occurred_at: '2020-05-05T13:08:22.039204Z' payload: connection_id: '234423' direction: outbound fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784 from: '+17733372107' original_media_url: http://www.example.com/fax.pdf status: queued client_state: aGF2ZSBhIG5pY2UgZGF5ID1d to: '+15107882622' user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8 record_type: event meta: attempt: 1 delivered_to: https://www.example.com/webhooks responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks fax.sending.started: post: summary: Fax Sending Started description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FaxSendingStarted' example: data: event_type: fax.sending.started id: 95479a2e-b947-470a-a88f-2da6dd07ae0f occurred_at: '2020-05-05T13:08:22.039204Z' payload: connection_id: '234423' direction: outbound fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784 from: '+17733372107' original_media_url: http://www.example.com/fax.pdf status: sending client_state: aGF2ZSBhIG5pY2UgZGF5ID1d to: '+15107882622' user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8 record_type: event meta: attempt: 1 delivered_to: https://www.example.com/webhooks responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: FaxSendingStarted tags: - Callbacks hostedNumberOrderEvent: post: operationId: HostedNumberOrderEvent summary: Hosted Number Order Event description: 'Webhook fired when a messaging hosted number order is created, updated, deleted, or progresses through the internal-transfer lifecycle (detected, approval requested, approved, rejected, auto-approved). Inspect `event_type` to distinguish events. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostedNumberOrderEvent' example: data: record_type: event id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c event_type: messaging_hosted_numbers_orders.internal_transfer_approval_requested occurred_at: '2026-04-20T18:10:02.574Z' payload: order_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 order_status: pending profile_id: d0b1dabe-efdb-4bc8-9dd3-11f0d8b5f5b3 user_id: b448f9cc-a842-4784-98e9-03c1a5872950 numbers: - value: '+13125550001' status: pending decision: pending approval_deadline: 1714521600 responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks inboundMessage: post: operationId: InboundMessage summary: Inbound Message description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MessagingInboundMessageEvent' example: data: record_type: event id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c event_type: message.received occurred_at: '2019-01-23T18:10:02.574Z' payload: record_type: message direction: inbound id: 7ee4241c-f127-47e5-9c34-3aac291f8058 type: SMS messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3 organization_id: b448f9cc-a842-4784-98e9-03c1a5872950 from: phone_number: '+18665550001' carrier: T-MOBILE USA, INC. line_type: Wireless to: - phone_number: '+18445550001' status: delivered carrier: TELNYX LLC line_type: VoIP cc: [] text: Hello, World! num_chars: 13 subject: From Telnyx! media: [] webhook_url: https://www.example.com/hooks webhook_failover_url: https://backup.example.com/hooks encoding: GSM-7 parts: 1 tags: - Greetings cost: amount: '0.0051' currency: USD cost_breakdown: carrier_fee: amount: '0.00305' currency: USD rate: amount: '0.00205' currency: USD tcr_campaign_id: TCPA3X7 tcr_campaign_billable: true tcr_campaign_registered: REGISTERED received_at: '2019-01-23T18:10:02.574Z' sent_at: null completed_at: null valid_until: null errors: [] responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks numberOrderStatusUpdate: post: operationId: NumberOrderStatusUpdate summary: Number Order Status Update description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/numbers_NumberOrderWebhookEvent' example: data: event_type: number_order.complete id: d578b093-a0e7-4b64-b0d3-6b689a6ff170 occurred_at: '2025-08-22T16:23:54.496464Z' payload: id: 12ade33a-21c0-473b-b055-b3c836e1c292 record_type: number_order phone_numbers_count: 1 connection_id: '346789098765567' messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600 billing_group_id: abc85f64-5717-4562-b3fc-2c9600 phone_numbers: - id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494 record_type: number_order_phone_number phone_number: '+19705555098' bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd474 regulatory_requirements: - record_type: phone_number_regulatory_requirement requirement_id: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576 field_value: 45f45a04-b4be-4592-95b1-9306b9db2b21 field_type: address requirements_met: true status: success sub_number_orders_ids: - string status: pending customer_reference: MY REF 001 created_at: '2018-01-01T00:00:00.000000Z' updated_at: '2018-01-01T00:00:00.000000Z' requirements_met: true record_type: event meta: attempt: 1 delivered_to: https://sample-api.com/webhook responses: '200': description: The server must return a HTTP 200, otherwise we will reattempt to deliver the webhook to the failover URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks numberReputationExternalVerificationStatusChanged: post: operationId: NumberReputationExternalVerificationStatusChanged summary: Ownership verification reviewed description: 'The ownership proof submitted for numbers hosted with another provider was approved or rejected. Sent to the enterprise''s ownership webhook URL (`PATCH /enterprises/{enterprise_id}/reputation/webhook`). This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' tags: - Phone Numbers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NumberReputationExternalVerificationStatusChangedEvent' example: data: record_type: event id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-10-05T07:00:12.521992Z' event_type: number_reputation.external_verification.status_changed payload: record_type: reputation_external_verification enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6 status: approved rejection_reason: null reviewed_at: '2026-10-06T14:03:10+00:00' meta: attempt: 1 delivered_to: https://example.com/webhooks/telnyx responses: '200': description: Return an HTTP 200 to acknowledge receipt; otherwise delivery is retried. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Ed25519 signature of the payload - compatible with webhook-signature schema: type: string x-webhook-equivalent: webhook-signature numberReputationNumberFlagged: post: operationId: NumberReputationNumberFlagged summary: Number ownership needs confirmation description: 'A monitored number hosted with another provider changed carrier, or its periodic ownership re-verification is due. Confirm ownership before `confirm_by` with `POST /enterprises/{enterprise_id}/reputation/numbers/{phone_number}/ownership_confirm`. Sent to the enterprise''s ownership webhook URL (`PATCH /enterprises/{enterprise_id}/reputation/webhook`). This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' tags: - Phone Numbers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NumberReputationNumberFlaggedEvent' example: data: record_type: event id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-10-05T07:00:12.521992Z' event_type: number_reputation.number.flagged payload: record_type: reputation_phone_number phone_number: '+13125550142' enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6 source: external ownership_status: pending_confirmation flag_reason: carrier_changed confirm_by: '2026-10-08T07:00:00+00:00' meta: attempt: 1 delivered_to: https://example.com/webhooks/telnyx responses: '200': description: Return an HTTP 200 to acknowledge receipt; otherwise delivery is retried. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Ed25519 signature of the payload - compatible with webhook-signature schema: type: string x-webhook-equivalent: webhook-signature numberReputationNumberRemoved: post: operationId: NumberReputationNumberRemoved summary: Number removed for an ownership reason description: 'A monitored number was removed from reputation monitoring because its ownership could not be kept verified. Removing a number yourself with `DELETE` does not send this event. Sent to the enterprise''s ownership webhook URL (`PATCH /enterprises/{enterprise_id}/reputation/webhook`). This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' tags: - Phone Numbers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NumberReputationNumberRemovedEvent' example: data: record_type: event id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2026-10-05T07:00:12.521992Z' event_type: number_reputation.number.removed payload: record_type: reputation_phone_number phone_number: '+13125550142' enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6 source: external ownership_status: removed removal_reason: unconfirmed_ownership removed_at: '2026-10-09T07:00:03+00:00' meta: attempt: 1 delivered_to: https://example.com/webhooks/telnyx responses: '200': description: Return an HTTP 200 to acknowledge receipt; otherwise delivery is retried. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Ed25519 signature of the payload - compatible with webhook-signature schema: type: string x-webhook-equivalent: webhook-signature replacedLinkClick: post: summary: Replaced Link Click description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReplacedLinkClickEvent' example: data: record_type: link_clicked url: https://telnyx.com to: '18445550001' message_id: 7ee4241c-f127-47e5-9c34-3aac291f8058 time_clicked: '2019-04-01T14:45:45.450Z' responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: ReplacedLinkClick tags: - Callbacks sessionStatusChanged: post: summary: session.status_changed description: 'Sent when the session moves to a new lifecycle status. Deliveries are best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.' tags: - Meeting Session Webhooks parameters: - name: X-Meeting-Bot-Signature in: header required: true description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time. Reject timestamps outside your accepted skew. No bearer token is sent. schema: type: string example: t=1784297100,v1=5e8f...a3c1 requestBody: required: true content: application/json: schema: type: object required: - id - event - version - occurred_at - data properties: id: type: string description: Unique event id; deduplicate deliveries on it. example: whdel_9f2c... event: type: string description: Event type. enum: - session.status_changed version: type: string description: Envelope version. example: '1' occurred_at: type: string format: date-time description: When the event occurred. data: type: object properties: session_id: type: string description: The meeting session this event belongs to. example: mtgsess_9b2f... status: type: string description: The new session status. status_detail: type: - string - 'null' description: Additional detail about the status (for example `cancelled`), or null. recording: type: boolean description: Whether the session is recording at this lifecycle edge. description: Status transition details. additionalProperties: false required: - session_id - status - status_detail - recording additionalProperties: false example: id: whdel_9f2c... event: session.status_changed version: '1' occurred_at: '2026-06-16T09:00:05Z' data: session_id: mtgsess_9b2f... status: active status_detail: null recording: true responses: '200': description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried. operationId: MeetingSessionStatusChangedWebhook security: [] transcriptCompleted: post: summary: transcript.completed description: 'Sent when the meeting transcript is finalized and ready to read. Individual `transcript.segment` messages are never delivered over webhooks; read segments via the transcript endpoint or the WebSocket stream. Deliveries are best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.' tags: - Meeting Session Webhooks parameters: - name: X-Meeting-Bot-Signature in: header required: true description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time. Reject timestamps outside your accepted skew. No bearer token is sent. schema: type: string example: t=1784297100,v1=5e8f...a3c1 requestBody: required: true content: application/json: schema: type: object required: - id - event - version - occurred_at - data properties: id: type: string description: Unique event id; deduplicate deliveries on it. example: whdel_9f2c... event: type: string description: Event type. enum: - transcript.completed version: type: string description: Envelope version. example: '1' occurred_at: type: string format: date-time description: When the event occurred. data: type: object properties: session_id: type: string description: The meeting session this event belongs to. example: mtgsess_9b2f... segment_count: type: integer description: Number of transcript segments observed during finalization. last_seq: type: - integer - 'null' description: Last transcript segment sequence number, or null for an empty transcript. ended_at: type: - string - 'null' format: date-time description: Session end time, or null when unavailable. description: Finalized transcript details. additionalProperties: false required: - session_id - segment_count - last_seq - ended_at additionalProperties: false example: id: whdel_9f2c... event: transcript.completed version: '1' occurred_at: '2026-06-16T09:05:00Z' data: session_id: mtgsess_9b2f... segment_count: 87 last_seq: 943 ended_at: '2026-06-16T09:04:41Z' responses: '200': description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried. operationId: MeetingTranscriptCompletedWebhook security: [] transcription: post: summary: Transcription description: ' This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TranscriptionEvent' example: data: record_type: event event_type: call.transcription id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 occurred_at: '2018-02-02T22:25:27.521992Z' payload: call_control_id: v2:7subYr8fLrXmaAXm8egeAMpoSJ72J3SGPUuome81-hQuaKRf9b7hKA call_leg_id: 5ca81340-5beb-11eb-ae45-02420a0f8b69 call_session_id: 5ca81eee-5beb-11eb-ba6c-02420a0f8b69 connection_id: '1240401930086254526' transcription_data: confidence: 0.977219 is_final: true transcript: hello this is a test speech responses: '200': description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature operationId: Transcription tags: - Callbacks whatsappAccountUpdate: post: operationId: WhatsappAccountUpdate summary: WhatsApp Account Update description: 'Reports coexistence lifecycle changes for a WhatsApp Business Account. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappAccountUpdateEvent' example: data: record_type: event id: 72f74d14-7506-4de7-bd13-62aacf140fa3 event_type: whatsapp.account.update occurred_at: '2026-09-02T10:20:00.000Z' payload: record_type: whatsapp_account waba_id: '106540352242922' event: ACCOUNT_OFFBOARDED responses: '200': description: Return an HTTP 200 to acknowledge the webhook. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks whatsappMessageEcho: post: operationId: WhatsappMessageEcho summary: WhatsApp Business App Message Echo description: 'Delivers a non-billable mirror of a message sent from the WhatsApp Business app on a coexistence-enabled number. This outbound event does not open or extend the Cloud API customer service window. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappMessageEchoEvent' example: data: record_type: event id: 4f923db9-186f-4c6a-9a14-0b6d46e31d77 event_type: message.echo occurred_at: '2026-09-02T10:15:30.000Z' payload: record_type: message direction: outbound origin: whatsapp_business_app id: c7b87bc9-d220-4b2c-916a-83c11ef9821f type: WHATSAPP organization_id: 7a7f45eb-6670-45fd-a3e3-5b9e4a4f2103 messaging_profile_id: 4001799e-1457-4c7f-a96a-735ed44c7de7 from: phone_number: '+13125551234' carrier: '' line_type: '' to: '+18655550001' body: from: '+18655550001' id: c7b87bc9-d220-4b2c-916a-83c11ef9821f foreign_id: wamid.HBgLMTg2NTU1NTAwMDEFQIAERgSODQ2 timestamp: '1788344130' type: text text: body: Sent from the WhatsApp Business app tags: [] cost: amount: null currency: null received_at: '2026-09-02T10:15:29.000Z' errors: [] responses: '200': description: Return an HTTP 200 to acknowledge the webhook. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks whatsappWabaAdded: post: operationId: WhatsappWabaAdded summary: WhatsApp WABA Added description: 'Reports the outcome of a WhatsApp Embedded Signup session. Telnyx sends it to the `webhook_url` set with `PATCH /v2/whatsapp/user_data` when the session succeeds or fails. This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WhatsappWabaAddedEvent' example: data: record_type: event id: 5d4f8c1a-6b2e-4f3a-9c7d-2e1b0a9f8e7d event_type: whatsapp.waba_added occurred_at: '2026-10-01T10:02:11.000Z' payload: record_type: waba_account_added waba_id: '123456789012345' phone_numbers: - '+15551234567' status: SUCCESS event_id: 019f4253-e09a-7622-bc6f-625378711d78 responses: '200': description: Return an HTTP 200 to acknowledge the webhook. parameters: - name: telnyx-timestamp in: header required: true description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp schema: type: integer format: int64 description: Unix timestamp for replay attack prevention x-webhook-equivalent: webhook-timestamp - name: telnyx-signature-ed25519 in: header required: true description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature schema: type: string description: Ed25519 signature of timestamp|payload for verification x-webhook-equivalent: webhook-signature tags: - Callbacks